1

我已經看過幾篇文章,詳細介紹瞭如何在向ConfigurationManager.ConnectionStrings添加連接字符串時避開ReadOnly屏障。見下面的一個這樣的帖子的例子。這些例子中的每一個都帶來了一個可怕的警告,即所採用的技術是「危險的」。有什麼危險?使用反射將連接字符串添加到ConfigurationManager.ConnectionString的危險

Dim cssc As ConnectionStringSettingsCollection = WebConfigurationManager.ConnectionStrings 
Dim t As Type = cssc.GetType().BaseType ' System.Configuration.ConfigurationElementCollection 
Dim fi As FieldInfo = t.GetField("bReadOnly", BindingFlags.Instance Or BindingFlags.NonPublic) 
fi.SetValue(cssc, False) 

回答

1

這是'危險'的一個原因是,你依靠一個名爲bReadOnly的私人領域。該字段不是公共.NET API的一部分,可能會在未來的.NET版本中更改,恕不另行通知。如果發生這種情況,並且如果您升級到該版本,您的代碼將不再起作用。