在我的asp.net mvc应用程序中存储配置设置的最佳方法是什么?

21

我正在开发一个asp.net mvc Web 应用程序,该应用程序执行一些API调用到其他Web应用程序。但是目前我将API用户名、API密码和API URL存储在我的代码中,如下所示:

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

                    query["username"] = "testuser";
                    query["password"] = "……";
                    query["assetType"] = "Rack";
                    query["operation"] = "AddAsset";
var url = new UriBuilder("http://win-spdev:8400/servlets/AssetServlet");
                    url.Query = query.ToString();
                    try
                    {

但是将这些设置存储在我的代码中,在我需要更改API调用设置的情况下不够灵活,并且也不安全。那么最好的存储这些设置的方法是什么呢?我想创建两个数据库表,一个用于存储URL(未来可能会有多个URL),另一个用于存储用户名和密码。那么创建数据库表是存储这些设置的正确方法吗?


2
你可以将它们存储在你的 web.config 文件中。你也可以加密那些需要安全性的设置。 - Marko
1个回答

40

2022年更新: 现在在.NET Core中,您应该使用新的配置API(appSettings.json或其他提供程序/ IConfiguration类注入到您的类/控制器中),但是相同的原则适用。在此处阅读有关.NET Core配置的更多信息。


您应该使用Web.Config文件(Configuration API)存储这些设置。这样,您就可以在不必每次重新编译整个应用程序的情况下更新设置。这是在Web(MVC或WebForms)应用程序中存储设置的最标准方法,并且使您有可能对应用程序进行encrypt sensitive settings透明加密。
您可以使用WebConfigurationManager类访问存储的设置。Here您可以找到一些如何使用它的示例。 代码示例: Web.config appSettings:
<appSettings>
    <add key="ApiUserName" value="MySampleUsername" />
</appSettings>

C# 代码:

string userName = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiUserName"];

1
那我必须手动将它们添加到我的 web.config 文件中吗?但是我该如何检索它们,以及如何加密和解密敏感数据? - John John
2
你可以通过以下方式检索它们:例如使用 ConfigurationManager.AppSettings["Username"] - Marko
@johnG 我更新了我的答案,并添加了一些对你有用的参考资料。 - Meryovi
1
@IssaFram 我回答这个问题只是为了其他人的利益。当您更新Web.config文件时,它会回收iis中的应用程序池,这会重置缓存,重新启动应用程序等,但它_不会_重新编译应用程序,因为它不会触摸任何dll文件,它仅修改iis读取的文件。 - Trevor Hart
@NwachukwuA.Nnaemeka 我不确定你所说的“成本”是什么意思,能否解释一下? - Trevor Hart
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接