我似乎遇到了一个奇怪的问题,在我的 Application_Start() 的 global.asax 中,我有一些东西会进入我的数据库,从名称/值表中获取我的所有应用程序设置,然后将它们放入通过申请Application.Add(name,value)
。
我在另一个项目中有一个“应用程序外观”,我的服务层、数据层等使用它来获取我需要做的各种设置。
在我的数据库中,我有几个条目:
ConfigName | ConfigValue
WebServiceUsername | myUsername
WebServicePassword | myPassword
所以在我的方法中,我开始从数据库中获取这些值,并将它们放入我的应用程序中:
protected void GetApplicationSettings()
{
//Get all the config values out of the database, and then put them into the application keys...
var appConfigAttributes = ApplicationConfigurationService.GetAppConfigNames();
foreach (var appConfig in appConfigAttributes)
{
Application.Add(appConfig.ConfigName,appConfig.ConfigValue);
}
}
这就是我稍后从应用程序调用值的方式:
public static string WebServiceUsername
{
get { return WebConfigurationManager.AppSettings["WebServiceUsername"]; }
}
这就是事情变得奇怪的地方。
如果我从我的 web 层调用应用程序外观:
<%= ApplicationFacade.WebServiceUsername %>
我一无所获(是的,我在 get 方法中只尝试过 ConfigurationManager!)。
但这是奇怪的事情......
如果我手动将应用程序密钥放入我的 web.config 文件中......
<appSettings>
<add key="putz" value="mash"/>
</appSettings>
然后在我的 ApplicationFacade 类中构建一个与 Putz 类似的属性,当我在视图 ( <%= ApplicationFacade.Putz %>
) 中进行调用时,我会mash
返回 ' '。
所以,我知道我的 ApplicationFacade 工作正常。所以也许这是我在 application_start() 中的代码?
好吧,如果我把这个放在我的视图<%=Application["WebServiceUsername"]%>
中,myUsername
就会返回。
是什么赋予了?!
回答
ConfigurationManager.AppSettings.Set(appConfig.ConfigName,appConfig.ConfigValue);