2013-08-04 27 views
2

我加入以下设置我的web.config文件中的一个asp.net MVC Web应用程序我怎样才能加密和解密,然后Web.config文件内容

<appSettings> 
    //code goes here 
    <add key="ApiUserName" value="testuser" /> 
    <add key="ApiPassword" value=,,,… /> 
    <add key="ApiURL" value="http://win-spdev:8400/servlets/AssetServlet" /> 
    </appSettings> 

这些设置用于启动API调用因为按照我的控制器的操作方法中: -

using (var client = new WebClient()) 
        { 
         var query = HttpUtility.ParseQueryString(string.Empty); 
         foreach (string key in formValues) 
         { 
          query[key] = this.Request.Form[key]; 
         } 

query["username"] = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiUserName"]; 
query["password"] = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiPassword"]; 
query["assetType"] = "Rack"; 
query["operation"] = "AddAsset"; 
string apiurl = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiURL"]; 
var url = new UriBuilder(apiurl); 

我看了一下加密和解密web.config文件http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx下面的链接。但我不知道如何执行tehe链接中描述的加密和解密,在我的上述操作方法中?

+0

的[web.config中加密与解密]可能重复(http://stackoverflow.com/questions/5326695/web-config-encryption-decryption) –

回答

3

基本上有两种标准的方法可以做到这一点,你可以将aspnet_regiis与DPAPI或RSA结合使用。使用RSA的优势在于,如果您的应用程序在多台机器上运行,您可以使用RSA密钥加密一次,并在所有机器上使用相同的密钥进行解密,与DPAPI一样,您必须为每台机器专门加密每台机器正在运行。

以DPAPI为例,您基本上只需进入您的框架目录并运行以下命令。

ASPNET_REGIIS -pe“的ConnectionStrings” -app“/ MyApplication的”

上面的命令将加密为“MyApplication的”这将是IIS应用程序的名称的连接字符串。现在必须在应用程序运行的计算机上运行,​​因此您首先需要将应用程序复制到服务器。使用RSA方法,您可以在您的计算机(或构建服务器)上进行加密,然后将其部署到任何想要的计算机上。

您可以在http://msdn.microsoft.com/library/dtkwfdky.aspx

关于这个美妙的事情检查出详细的演练中,你不必担心你怎么访问你的应用程序设置和连接字符串,你可以只使用ConfigurationManager.Appsettings和ConfigurationManager.ConnectionStrings与您通常一样,该框架将负责为您解密。

+1

感谢您的答复,但吨似乎使用regiis我可以只加密沃尔段。所以在我的情况下,我应该加密整个? –

+1

正确,但这只适用于您的服务器环境。 – nerdybeardo