2012-04-10 23 views
3

好的,所以這個讓我有點困惑。我有以下幾點:AppSettings vs Web.Config中的項目特定設置

string csvOfAttributes = CableSolve.Web.Properties.Settings.Default.GenerateBoothReportAttributes; 

和我的web.config:

<CableSolve.Web.Properties.Settings> 
    <setting name="GenerateBoothReportAttributes" serializeAs="String"> 
    <value>327, 329, 330, 369, 342</value> 
    </setting> 
</CableSolve.Web.Properties.Settings> 

我對這個兩個問題:

  • 如果我忽略我的設置從Web.config文件我收到編譯錯誤。這怎麼可能? Web.config是用戶可編輯的;我只會預計運行時錯誤。如果我編譯我的應用程序,部署,然後用戶編輯此設置的名稱 - 不會破壞編譯的代碼?
  • 我可能會將此設置存儲在我的web.config文件的appConfig部分中。要訪問值我會通過ConfigurationManager - 我只會在運行時收到一個空對象,如果該設置丟失。這看起來不太有利,因爲我傾向於在編譯期間出現我的錯誤,但它讓我想知道:這兩個選項之間有什麼區別,我應該在什麼時候使用它們?
+0

http://stackoverflow.com/a/7899056/615424處理它們 – 2012-04-11 19:57:01

回答

0

我認爲答案主要包含在問題中:整個區別是基本的鍵 - 值對模式​​與更復雜的模式。通過擴展,差異與弱類型和強類型以及運行時間和編譯時間有關。總的來說,後者更好一些,就像.NET比Javascript更「好」一樣:你會提前發現錯誤,而不是讓他們以不可預知和難以追蹤的方式冒泡到應用程序中。例外的強模式的偏好可能包括:

  • 您的應用需求正在不斷髮展,所以你不希望在模式鎖定
  • 你有一個根級別的配置工作,不同的開發商或應用程序將使用
  • 要允許「無效」的配置,並在運行時
相關問題