You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析含=符号的ConnectionString时AuthCode值末尾=丢失的问题求助

解决连接字符串中值包含=符号的解析问题

你的问题核心在于用Split('=')会把值里的所有等号都拆分,导致末尾的=被截断。我们只需要拆分第一个等号,就能完整保留值里的所有内容,包括后续的=符号。

修改后的解析代码

private void Parse(string connectionString)
{
    var components = connectionString.Split(';');
    foreach (var component in components)
    {
        var trimmedComponent = component.Trim();
        if (string.IsNullOrEmpty(trimmedComponent))
            continue;

        // 定位字段与值之间的第一个等号,只拆分这一次
        var equalsIndex = trimmedComponent.IndexOf('=');
        if (equalsIndex == -1)
            throw new InvalidOperationException($"Invalid connection string component: {trimmedComponent}");

        var field = trimmedComponent.Substring(0, equalsIndex).ToLower();
        // 从第一个等号的下一位开始截取,保留值里的所有内容
        var value = trimmedComponent.Substring(equalsIndex + 1);

        switch (field)
        {
            case "url":
                _serverUrl = value;
                break;
            case "authcode":
                _authcode = value;
                break;
            default:
                throw new InvalidOperationException($"{field} is unknown in connection settings");
        }
    }
}

方案说明

  • 用IndexOf('=')精准定位字段和值的分隔符,避免误拆分值里的=符号
  • 值部分从第一个等号的下一位开始截取,不管值里包含多少个=,都会完整保留
  • 增加了对无效组件的判断(没有=的情况),让代码容错性更强

关于SqlConnectionStringBuilder的补充

SqlConnectionStringBuilder是专门为SQL Server连接字符串设计的,只识别官方定义的连接关键字(比如Server、Database等),遇到url这类自定义关键字自然会报错,确实不适合你的自定义连接字符串场景。

用上面的代码测试你给出的示例连接字符串:

url=https://devunifiedinterface.appstore.com; authCode=mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=

_authcode就能正确拿到完整的mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=了。

内容的提问来源于stack exchange,提问作者Kanini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:18:05