我看过几篇文章详细介绍了如何在连接字符串添加到ConfigurationManager.ConnectionStrings时绕过ReadOnly屏障。请参阅下面一个这样的帖子的示例。这些例子中的每一个都是一个可怕而模糊的警告,即采用的技术是“危险的”。有什么危险?
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)
答案 0 :(得分:1)
这是“危险”的一个原因是您依赖于名为bReadOnly
的私有字段。该字段不是公共.NET API的一部分,可能会在未来的.NET版本中发生变化,恕不另行通知。如果发生这种情况,并且升级到该版本,则代码将不再有效。