如何在覆盖ProtectedConfigurationProvider时从App.config中读取

本文关键字:App config 读取 时从 ProtectedConfigurationProvider 覆盖 | 更新日期: 2023-09-27 18:00:52

为了将配置设置集中在数据库中,我创建了一个从ProtectedConfigurationProvider继承的自定义类。在ProtectedConfigurationProvider::Decrypt((函数中,我从数据库中读取所有键和值。

我想在本地app.config文件中保留一些特定的键和值。如何在不创建无限循环的情况下从自定义类中访问这些值?

如果我尝试访问我的本地配置值,如下所示:

string test = ConfigurationManager.AppSettings["Test.String"].ToString();

从我的内心ProtectedConfigurationProvider::Decrypt((函数,我得到一个无限循环。

注意:我想把我的键/值保存在appSettings部分但看起来EncryptedData是唯一可以包含在其中的标签。

<appSettings configProtectionProvider="CustomProtectedConfigProvider">
    <EncryptedData></EncryptedData>
</appSettings>

如何在覆盖ProtectedConfigurationProvider时从App.config中读取

我认为这个代码片段可能会帮助你

Configuration objConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
        AppSettingsSection objAppsettings = (AppSettingsSection)objConfig.GetSection("appSettings");
        if (objAppsettings != null)
        {
            objAppsettings.Settings.Add("hello", "world");
            objConfig.Save();
        }

我会尽力提供最接近答案的东西。钥匙不能放置在内

<appSettings></appSettings> 

标记,因为它们只能包含EncryptedData标记。但是,密钥和值可以保存在中

<configProtectedData><providers></providers></configProtectedData>

部分。当调用重写的ProtectedConfigurationProvider::Initialize((函数时,可以通过"config"参数访问这些键和值,而不需要从而导致无限循环。