我有许多项目需要访问设置、数据库连接、web api url、身份验证服务器url等,这些内容将根据其部署而变化。
最初,我使用appSettings并将其作为属性公开。这似乎可以通过ide进行开发(Visual Studio 2013)。
我听从了建议
here
所以最初我有:
private static KeyValueConfigurationCollection GetAppSettings()
{
var dllPath = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath;
var dllConfig = ConfigurationManager.OpenExeConfiguration(dllPath);
var appSettings = (AppSettingsSection)dllConfig.GetSection("appSettings");
return appSettings.Settings;
}
public string AknowledgeSTSOrigin
{
get
{
string setting;
if (_aknowledgeSTSOrigin != null)
{
setting = _aknowledgeSTSOrigin;
}
else
{
if (System.Diagnostics.Debugger.IsAttached)
{
setting = "https://localhost:44333";
}
else
{
var settings = GetAppSettings();
if (settings.Count > 0)
{
setting = settings["AknowledgeSTSOrigin"].Value;
}
else
{
setting = System.Configuration.ConfigurationManager.AppSettings["AknowledgeSTSOrigin"];
}
}
_aknowledgeSTSOrigin =setting;
}
return setting;
}
}
有时它停止了工作,但不幸的是,我不知道什么时候或者为什么,因为我在ide中运行,所以它总是默认为调试器附加的条件。
此时的问题是,上述所有路由都从appSettings返回null。
在搜索问题时,我发现现在建议使用项目属性。我这样做了——应用程序中出现了一个新的应用程序设置部分。已找到配置和属性。
因此,上述内容简化为:
setting = Properties.Settings.Default.AknowledgeSTSOrigin;
因此,该方法似乎从应用程序获取属性。编译时配置。
我试着在谷歌上搜索这个并进行检查,但没有发现任何有用的东西。
已尝试添加
Properties.Settings.Default.Reload();
根据
this post
但不起作用。
现在变得更加困惑。找到以下内容
post