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

时间:2014-06-25 13:58:30

标签: c# asp.net sqlcachedependency web-config

我在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编辑web.config文件,因为这会重新启动工作进程。

是否有另一种方法可以在代码中配置SqlCacheDependency?

1 个答案:

答案 0 :(得分:-1)

不是直接的答案,但也许您的问题可以通过在部署时使用config transformations来解决。