0

在我的项目中,我需要存储复杂的应用程序设置,我不想将它存储在数据库中。asp.net中的自定义配置文件

应用程序设置都可以通过管理界面编辑/转换等

所以,如果我在配置存储设置,每当configugration改变时,应用程序重新启动。

所以第二个想法是从项目中存储的文件(例如“AppSettings.conf”)中加载外部文件。

问题很简单:是否可以从外部文件加载并保存设置而无需重新启动应用程序?

感谢

+0

您确定应用程序重新启动吗? –

+4

答案很简单,你可以做任何你想要的东西,而不是使用'ConfigurationManager.AppSettings',你可以编写自己的帮助类,读/写XML文件,你可以放在任何你想要的地方。 我仍然更喜欢数据库,因为我们有不同的环境,如Dev,QA,Prod等,并且在每个环境中设置都不同,我不想冒着在部署新版本时覆盖本地文件的风险。 –

+0

@SaeedNeamati是的,web.config中的任何动态更改都是在重新启动应用程序之后进行的。 – Mennion

回答

0

最后决定在db中保存/加载应用程序设置。

0

是,存储在XML文件中的设置,并且可以读/从XML文件就好写入/。但是,您不能将存储在web.config中的任何现有组件(如<authentication><authorization>元素)指向该XML文件,这将不起作用。只有你的自定义设置会。

HTH。

0

而不是创建一个自定义配置文件,创建自定义配置节在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应用程序(属性>设置)的属性窗口。

+0

感谢您的回答,但自定义网页配置部分与运行时的经典编辑网页配置有相同的问题... – Mennion

+0

Gotcha。用另一个想法修改了我的答案。 –