在我的项目中,我需要存储复杂的应用程序设置,我不想将它存储在数据库中。asp.net中的自定义配置文件
应用程序设置都可以通过管理界面编辑/转换等
所以,如果我在配置存储设置,每当configugration改变时,应用程序重新启动。
所以第二个想法是从项目中存储的文件(例如“AppSettings.conf”)中加载外部文件。
问题很简单:是否可以从外部文件加载并保存设置而无需重新启动应用程序?
感谢
在我的项目中,我需要存储复杂的应用程序设置,我不想将它存储在数据库中。asp.net中的自定义配置文件
应用程序设置都可以通过管理界面编辑/转换等
所以,如果我在配置存储设置,每当configugration改变时,应用程序重新启动。
所以第二个想法是从项目中存储的文件(例如“AppSettings.conf”)中加载外部文件。
问题很简单:是否可以从外部文件加载并保存设置而无需重新启动应用程序?
感谢
最后决定在db中保存/加载应用程序设置。
是,存储在XML文件中的设置,并且可以读/从XML文件就好写入/。但是,您不能将存储在web.config中的任何现有组件(如<authentication>
或<authorization>
元素)指向该XML文件,这将不起作用。只有你的自定义设置会。
HTH。
而不是创建一个自定义配置文件,创建自定义配置节在web.config:
这里只是一个例子:
public class SomeConfigurationSection: ConfigurationSection
{
[ConfigurationProperty("configurationData")]
public string ConfigurationData
{
get
{
return this["configurationData"] as string;
}
set
{
this["configurationData"] = value;
}
}
[ConfigurationProperty("otherConfigurationData")]
public int OtherConfigurationData
{
get
{
return Convert.ToInt32(this["otherConfigurationData"]);
}
set
{
this["otherConfigurationData"] = value;
}
}
}
编辑
另一种可能的解决办法在Properties文件夹下使用Settings.setttings
文件。我相信你可以在这里添加,编辑和删除设置,而无需重新启动应用程序:
//add a setting
Properties.Settings.Default.Context.Add("foo", "bar");
//edit a setting
Properties.Settings.Default.Context["foo"] = "bar";
//remove a setting
Properties.Settings.Default.Context.Remove("foo");
您可以Properties
文件夹下访问该文件,或在Web应用程序(属性>设置)的属性窗口。
感谢您的回答,但自定义网页配置部分与运行时的经典编辑网页配置有相同的问题... – Mennion
Gotcha。用另一个想法修改了我的答案。 –
您确定应用程序重新启动吗? –
答案很简单,你可以做任何你想要的东西,而不是使用'ConfigurationManager.AppSettings',你可以编写自己的帮助类,读/写XML文件,你可以放在任何你想要的地方。 我仍然更喜欢数据库,因为我们有不同的环境,如Dev,QA,Prod等,并且在每个环境中设置都不同,我不想冒着在部署新版本时覆盖本地文件的风险。 –
@SaeedNeamati是的,web.config中的任何动态更改都是在重新启动应用程序之后进行的。 – Mennion