Asp.net

從多個 Web.config 文件訪問 appSettings

  • July 11, 2013

我正在設計一個 ASP.NET MVC4 Web App 項目。在我的項目的根目錄中,我有一個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 文件,一個 at./Web.config和一個 at ./Areas/PackageName/Web.config

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

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

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

嘗試

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

在您項目的 Web.config 中

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

引用自:https://stackoverflow.com/questions/17575144