2013-07-10 121 views
5

我正在設計一個ASP.NET MVC4 Web App項目。在我的項目的根目錄中,我有習慣性的默認Web.config文件和我的相應元素。特別是,我定義了幾個appSettings元素。作爲示例摘錄來證明這一點:從多個Web.config文件訪問appSettings

<appSettings> 
    <add key="foo" value="bar" /> 
</appSettings> 

當然,我可以利用ConfigurationManager.AppSettings["foo"]內代碼訪問這個元素。這對我來說非常合適。不過,我正在創建一個NuGet包與我的項目一起。該軟件包安裝在我的項目的Areas目錄下的自己的目錄中。在這裏,在我的軟件包的根目錄中,我有另一個Web.config文件。這是因爲,當另一個用戶導入NuGet包時,包資源的配置是該包的本地特性。讓包的Web.config包含以下內容:

<appSettings> 
    <add key="dirEnabled" value="true" /> 
</appSettings> 

只是爲了在相對路徑方面澄清,我現在有兩個Web.config文件中,一個在./Web.config,一個在./Areas/PackageName/Web.config

在我的包中,我想檢索dirEnabled的值。爲此,我撥打電話:ConfigurationManager.AppSettings["dirEnabled"]。但是,這會引發錯誤。看起來好像只有從./Web.config檢索appSettings的集合,而不是我的軟件包配置文件。 是否有可能從我的包的配置文件而不是項目根配置文件抓取appSettings集合?

+0

也看到http://stackoverflow.com/questions/11351106/multiple-appsettings-files-is-it-possible –

回答

7

想通了!要使用不同的配置文件,請合併WebConfigurationmanager。因此,要訪問的appSettings的./Areas/PackageName/Web.config,只需使用:

var config = WebConfigurationManager.OpenWebConfiguration("~/Areas/PackageName"); 
string dirE = config.AppSettings.Settings["dirEnabled"].Value; 
2

<appSettings file="<Path_To_Second_Web.Config>"> 
    ... 
</appSettings > 

嘗試在你的項目的Web.config

http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx

+0

感謝您的回答!但是,它仍然會拋出一個錯誤,指示它找不到該值。 – mattkgross

+0

你也許會在這裏找到一些東西 http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx –

相關問題