代码之家  ›  专栏  ›  技术社区  ›  Kanini

使用=符号解析ConnectionString

  •  1
  • Kanini  · 技术社区  · 7 年前

    我试图解析连接字符串并提取代码中要使用的值。问题是我的连接字符串中的一个值具有 = 象征。

    这是我的密码

    private void Parse(string connectionString)
    {
        var components = connectionString.Split(';');
        foreach (var component in components)
        {
            if (string.IsNullOrEmpty(component)) continue;
    
            var fieldValuePair = component.Trim().Split('=');//Problematic? Don't know how to fix!
            var field = fieldValuePair[0].ToLower();
            var value = fieldValuePair[1];
    
            switch (field)
            {
                case "url":
                    _serverUrl = value;
                    break;
                case "authcode":
                    _authcode = value;
                    break;
                default: throw new InvalidOperationException($"{field} Value is unknown in connection settings");
            }
        }
    }
    

    问题是,除了authcode中有一个=之外,此代码在所有实例中都有效。

    <add name="ServerAuthCodeString" connectionString="url=https://devunifiedinterface.appstore.com; authCode=mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=" />
    

    我得到的输出是

    _authcode = mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu //Missing = at the end
    

    _authcode = mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=
    

    是的,有一个 question 这是关于连接字符串的。 然而,答案似乎仍然不能解决这个问题 =

    比如说这个, comment

    SqlConnectionStringBuilder 不适合我。如果我传入connectionString,它会抱怨关键字url不是vaid。

    1 回复  |  直到 7 年前
        1
  •  4
  •   er-sho    7 年前

    您需要指定要从中返回的拆分字符串的数量 Split 2 .

    var fieldValuePair = component.Trim().Split(new char[] { '=' }, 2);
    

    • 索引处第一个拆分的字符串 0 : _authcode
    • 1 : mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu= = )