【发布时间】:2013-10-25 17:41:06
【问题描述】:
在普通的 ASP.NET Web 表单站点中,我会使用 web.configs "appsettings" 将应用程序设置数据添加到站点。但是,在使用 MVC 3 时,我无法以这种方式检索设置值。
首先,有 2 个 web.config 文件。一个在站点的根目录中,第二个列在“视图”区域中。我假设我想将我的 appsettings 信息放在根 web.config 文件中,对吗? (将它放在另一个视图中似乎会产生一个错误,指出“AppSettings”每个 Web 应用程序只能出现一次。)
当我尝试检索它时 (C#: System.Configuration.ConfigurationManager.AppSettings["SettingName"]) 我得到一个空白或空/空返回值。我做错了什么?
我应该提到,我实际上是在模型区域下的类文件中检索此信息,以便使用 get 为模型设置特定值;放;。有没有可能我不允许在模型中这样做?
在 Controller.cs 中:
WindowsLiveConnect.ServiceConfiguration WLSC = new WindowsLiveConnect.ServiceConfiguration();
ViewBag.ClientID = SC.ClientID; // This returns empty
在 web.config 中
...
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="ClientID" value="0000000040062A3F" />
<add key="ClientSecret" value="SUPERSECRETPASSWORD" />
<add key="RedirectURL" value="http%3A%2F%2Fwww.quilnet.com" />
</appSettings>
...
在 Model.cs 文件中:
public class ServiceConfiguration
{
private string clientid;
private string clientsecret;
private string redirecturl;
public string ClientID
{
get { return clientid; }
set
{
clientid = System.Configuration.ConfigurationManager.AppSettings["ClientID"];
}
}
public string ClientSecret
{
get { return clientsecret; }
set
{
clientsecret = System.Configuration.ConfigurationManager.AppSettings["ClientSecret"];
}
}
public string RedirectURL
{
get { return redirecturl; }
set
{
redirecturl = System.Configuration.ConfigurationManager.AppSettings["RedirectURL"];
}
}
}
【问题讨论】:
-
1) 在根级别使用 web.config。 2) 您的
set实现不正确。正如您现在所拥有的那样,您的clientid不会被初始化,直到您明确调用ServiceConfiguration.ClientID = ...之后才会从 AppSettings 为其分配一个值。 -
您的问题实际上是我正在寻找的答案,谢谢!
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4