在正常的ASP.NET Web表单站点中,我将使用web.configs“appsettings”将应用程序设置数据添加到站点。但是,当使用MVC 3时,我无法以这种方式检索设置值。
首先,有2个web.config文件。一个在网站的根目录,第二个列在Views区域。我假设我想把我的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"]; } } }
解决方法
通常我正在使用AppSettings静态类来访问这些参数。这样的事情
public static class AppSettings { public static string ClientSecret { get { return Setting<string>("ClientSecret"); } } private static T Setting<T>(string name) { string value = ConfigurationManager.AppSettings[name]; if (value == null) { throw new Exception(String.Format("Could not find setting '{0}',",name)); } return (T)Convert.ChangeType(value,typeof(T),CultureInfo.InvariantCulture); } }
原文地址:https://www.jb51.cc/aspnet/253040.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。