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。用另一個想法修改了我的答案。 –

相關問題