2013-05-13 35 views
8

我需要加密/解密app.config中的自定义部分以及web.config文件。我读过aspnet_regiis可以用于web.config,但我需要以编程方式执行此操作。加密app/web.config文件中的自定义部分

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

ConfigurationSection connStrings = config.AppSettings; 

加密/解密appSettings部分。

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

P.S.在我的函数中,我需要将自定义节名称作为字符串参数。

例如:

例如:

<Configuration> 
    <MyCustomTag> 
     <... data /> 
    </MyCustomTag> 
</Configuration> 

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

回答

2

从CommandPromt VS 2010年呼吁加密的命令:

%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" 
+0

我需要以编程方式执行此操作。另外,部署站点不需要具有aspnet_regiis。 – Karan 2013-05-13 10:10:41

+0

这适用于标准命令行,而不仅仅是VS 2010命令提示符。我发现最简单的方法就是cd到我的网站的根目录,然后使用WITH_PROJECT_NAME的空字符串命令。 – user489998 2014-02-05 16:18:32

0

要加密,使用由HaGever张贴在答案是命令行。

This question有一些示例代码来从代码中读取app.config文件。该代码无法工作,因为加密密钥未安装在用于解密app.config的机器上。

+0

我需要以编程方式执行此操作。另外,部署站点不需要具有aspnet_regiis。 – Karan 2013-05-13 10:11:02

4

我使用的代码,我发现在http://www.a2zmenu.com/Blogs/CSharp/How-to-encrypt-configuration-file.aspx

我在贴我的代码来实现这一点,但基本上它是非常一致的是网页上的代码,不同的是改变应用程序的名称。

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

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(); 
} 

再经过我救了我的钥匙(S),我称之为

EncryptAppSettings("appSettings"); 

,或许你可以调整参数值的方式,以适应那里了。

+0

谢谢。看上去不错。 – Karan 2013-05-13 10:38:11

+0

问题已更新。但是,它仅显示如何加密appSettings部分而不是自定义部分。在我的情况下,我想要在例如<... data> Karan 2013-05-13 10:43:39

+0

编辑我的答案。 – 2013-05-13 11:03:20