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
読み取り専用のエラーが表示されます。pollTime
およびenabled
属性についても同様です。
_bReadOnly
これまでのところ、非公開プロパティfalse
をリフレクションを使用するように設定することで、それらを書き込み可能にすることができました
FieldInfo fi = typeof(ConfigurationElement).GetField("_bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(section, false);
リフレクションを使用して、シールされた .net クラスのプライベート プロパティの値を変更することにあまり慣れていません。また、これを使用して web.config ファイルを編集したくありませんConfigurationManager.OpenExeConfiguration
。これは、ワーカー プロセスを再起動するためです。
コード ビハインドで SqlCacheDependency を構成する別の方法はありますか?