C# 加密app/web.config文件中的自定义节

C# 加密app/web.config文件中的自定义节,c#,encryption,configuration-files,C#,Encryption,Configuration Files,我需要加密/解密app.config和web.config文件中的自定义部分。我读到aspnet_regis可以用于web.config,但我需要通过编程来实现这一点 打开mappedExeConfiguration后,我指定了一个部分,如下所示: ConfigurationSection connStrings = config.AppSettings; 加密/解密AppSettings部分 如何指定自定义节的名称?当我在configurationSection对象后键入自定义节的名称时,I

我需要加密/解密app.config和web.config文件中的自定义部分。我读到aspnet_regis可以用于web.config,但我需要通过编程来实现这一点

打开mappedExeConfiguration后,我指定了一个部分,如下所示:

ConfigurationSection connStrings = config.AppSettings;
加密/解密AppSettings部分

如何指定自定义节的名称?当我在configurationSection对象后键入自定义节的名称时,IntelliSense无法识别它。(它只识别几个众所周知的部分)

另外,在我的函数中,我需要将自定义节名称作为字符串参数

例如:

e、 g



其中MyCustomTag是我需要加密/解密的部分。

从VS 2010的CommandPromt调用加密命令:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis  -pef "connectionStrings" "YOUR_PROJECT_NAME" -prov "DataProtectionConfigurationProvider"
解密:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis  -pdf "connectionStrings" "YOUR_PROJECT_NAME"

要加密,请使用在is应答中发布的命令行


有一些示例代码可以从代码中读取app.config文件。代码不起作用,因为加密密钥未安装在用于解密app.config的计算机上。

我使用在上找到的代码实现了这一点

我会粘贴我的代码,但基本上它与网页上的代码几乎相同,只是更改了应用程序名称

编辑:对于自定义部分,我不确定,因为我不需要使用它,但是您可以在下面的一行中探索config对象提供给您的内容

Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe");
这是我的整个UpdateKey()方法,我现在意识到我从网页中修改了一点。也许有帮助

public static void UpdateKey(string key, string newValue) 
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe");
    config.AppSettings.Settings[key].Value = newValue;
    config.Save();
} 
然后在我保存了我的钥匙后,我打电话给


也许你也可以调整参数值以适应那里的情况。

我需要通过编程来实现这一点。此外,部署站点不需要有aspnet_regiis。这可以通过标准命令行工作,而不仅仅是VS 2010命令提示符。我发现cd到我网站的根目录并使用带有空字符串的命令作为你的项目名称是最容易的。我需要通过编程来完成这项工作。此外,部署站点不需要更新aspnet_regiis.Question。但是,它只显示了如何加密appSettings部分,而不是自定义部分。在我的例子中,我想加密一个自定义标记,例如。
public static void UpdateKey(string key, string newValue) 
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe");
    config.AppSettings.Settings[key].Value = newValue;
    config.Save();
} 
EncryptAppSettings("appSettings");