以中等信任度以编程方式修改配置节
-
27-10-2019 - |
题
我的应用程序中有一个自定义的ConfigurationSection: 通用标签
在我的web.config中 通用标签
阅读本节工作正常。我遇到的问题是,当我通过阅读本节时 通用标签
然后我继续修改Server
属性:
通用标签
这不会修改web.config文件中的“服务器”属性。
注意:这需要在中等信任下工作,因此我不能使用可以正常工作的WebConfigurationManager.OpenWebConfiguration
。是否有一种明确的方法告诉ConfigSection
保存自身?
解决方案
简短回答-不。.NET团队(据称)打算在v4中修复此问题,但这没有发生。
原因是因为使用WebConfigurationManager.GetSection
会返回嵌套的只读NameValueCollection
,当您更改它们的值时它们不会持久。正如您已经正确确定的那样,使用WebConfigurationManager.OpenWebConfiguration
是获得对配置的读写访问权限的唯一方法-但是,当FileIOPermission
尝试将所有继承的配置加载到您的web.config时,您会抛出OpenWebConfiguration
异常。-包括C:\WINDOWS\Microsoft.NET\Framework
中的机器级web.config和machine.config文件,这些文件明确属于Medium Trust范围。
长答案-使用XDocument
/ XmlDocument
和XPath获取/设置配置值。
不隶属于 StackOverflow