我如何以编程方式修改web.config的SqlCacheDependency部分

本文关键字:config web SqlCacheDependency 部分 修改 方式 编程 | 更新日期: 2023-09-27 18:10:10

我在我的web.config

<system.web>
    <caching>
      <sqlCacheDependency pollTime="60000" enabled="true">
        <databases>
          <add connectionStringName="CS" name="DB"/>
        </databases>
      </sqlCacheDependency>
    </caching>
</system.web>

我试图在<databases>元素中添加一个新条目,使用此代码

SqlCacheDependencySection section = ConfigurationManager.GetSection("system.web/caching/sqlCacheDependency") as SqlCacheDependencySection;
section.Databases.Add(new SqlCacheDependencyDatabase("DB2", "CS2", 60000)); 

但是我收到一个错误,databases是只读的。对于pollTimeenabled属性也是如此。

到目前为止,我已经设法通过使用反射将_bReadOnly私有属性设置为false来使它们可写

FieldInfo fi = typeof(ConfigurationElement).GetField("_bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(section, false);

我不是很舒服使用反射来改变一个封闭的。net类的私有属性的值。另外,我也不想编辑网页。配置文件使用ConfigurationManager.OpenExeConfiguration,因为这会重新启动工作进程。

是否有另一种方法来配置代码后面的SqlCacheDependency ?

我如何以编程方式修改web.config的SqlCacheDependency部分

不是一个直接的答案,但也许你的问题可以通过在部署时使用配置转换来解决。