2010-01-15 78 views
5

雖然使用的是第三方的dll我得到以下異常:System.configuration的web.config和app.config中

exePath必須在一個獨立的EXE內不運行指定

跟蹤以下跟蹤

System.Configuration.ConfigurationManager.OpenExeConfigurationImpl(ConfigurationFileMap fileMap,布爾isMachine,ConfigurationUserLevel userLevel,String exePa日)。

我找到的原因是它在尋找app.config,我在web.config中提供了詳細信息。我的問題是:爲什麼system.configuration區分web.config和app.config?有什麼想法嗎?

回答

7

可執行文件:

幾個.NET可執行文件可以住在同一目錄下。由於在同一目錄中不能有兩個同名的文件,因此應用程序必須爲其主配置文件使用不同的名稱。 applicationName.exe.config方案解決了這個問題。

Web應用程序/網站:

.NET Web應用程序被編譯成DLL和網站通常編譯剛剛在時間。因此,這些類型的項目沒有「主要切入點」。可以創建一個Web項目,將每個頁面編譯爲自己的程序集。哪一個是主要的組件?我們應該在哪個程序集中命名配置文件?

幸運的是,從一個目錄中只能託管一個Web項目,因此只有一個主配置文件可以在這裏生存。這允許按照慣例選擇主配置文件名,並且該文件名恰好是web.config

6

web.config僅適用於您的網站和Web應用程序。它保持固定,即不改變它的名字;它總是被稱爲web.config

app.config適用於非web應用程序 - Winforms,WPF,NT Services等。當您構建項目時,這將重命名爲YourApplicationName.exe.config。在應用程序的目錄中,你永遠不會找到該名稱的app.config(或者如果你這樣做,它將不會被使用)。

爲什麼微軟選擇使用兩種不同的名稱 - 我不知道 - 問微軟。

所以你基本上只需要知道你在處理什麼,並在正確的地方提供信息。

+1

+1,我在下面的答案中添加了關於** why **部分的想法。 – 2010-01-15 13:14:57

相關問題