2

我在我的 Web.config 文件中为 asp.net mvc Web 应用程序添加了以下设置

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

这些设置用于在我的 Controller 操作方法中启动 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的链接。但我不确定如何在上述操作方法中进行链接中描述的加密和解密?

4

1 回答 1

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,框架将负责为你。

于 2013-08-04T22:07:01.830 回答