序列化/反序列化的连接字符串是否区分大小写?

时间:2011-07-15 12:02:20

标签: c# .net serialization connection-string

如何以区分大小写的方式反序列化字符串?看起来序列化是区分大小写的,反序列化的重点是不区分大小写?

enter image description here

更新:尝试本地化底层的内容和内容,我已经设置了DEBUGGER来下载符号并进入FCL .NET代码。我已经卡在这些代码附近(DbConnectionOptions.cs第873-921行):

private static NameValuePair ParseInternal(Hashtable parsetable, string connectionString, bool buildChain, Hashtable synonyms, bool firstKey) {
    Debug.Assert(null != connectionString, "null connectionstring"); 
    StringBuilder buffer = new StringBuilder();
    NameValuePair localKeychain = null, keychain = null;

        int nextStartPosition = 0; 
        int endPosition = connectionString.Length; 
        while (nextStartPosition < endPosition) {
            int startPosition = nextStartPosition; 

            string keyname, keyvalue;
            nextStartPosition = GetKeyValuePair(connectionString, startPosition, buffer, firstKey, out keyname, out keyvalue);
            if (ADP.IsEmpty(keyname)) { 
                // if (nextStartPosition != endPosition) { throw; }
                break; 
            } 

            string realkeyname = ((null != synonyms) ? (string)synonyms[keyname] : keyname);
            if (!IsKeyNameValid(realkeyname)) { 
                throw ADP.KeywordNotSupported(keyname); 
            }

修改发生在while循环内部,它在每次迭代中查找另一个键/值对。不幸的是,我不能'key watch'到keyname和realkeyname变量。我想同义词Hashtable在这里也很重要。

  • 我怎样才能看到这些变量值?
  • 接下来我该怎么办才能找到确切的修改地点?

2 个答案:

答案 0 :(得分:5)

因为(as per the documentation)连接字符串:

  

关键字不区分大小写。

但值 区分大小写(显然,对于密码等)

答案 1 :(得分:0)

序列化肯定区分大小写,但是您的连接字符串不需要 - 您确定您的ConnectionString属性没有做一些奇怪的事情,例如:

public string ConnectionString
{
    get
    {
        return this._ConnectionString;
    }
    set
    {
        this._ConnectionString = value != null ? value.ToLower() : null;
    }
}

请注意,SqlConnectionStringBuilder似乎会对连接字符串进行“规范化”,即“怪异”并不一定需要在您的代码中。

尝试在调试器中执行info.GetValue("ConnectionString", typeof(string));,看看你得到了什么。