7

我正在设计一个 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 集合?

4

2 回答 2

8

弄清楚了!要使用不同的配置文件,请合并WebConfigurationmanager. 因此,要访问 的 appSettings ./Areas/PackageName/Web.config,只需使用:

var config = WebConfigurationManager.OpenWebConfiguration("~/Areas/PackageName");
string dirE = config.AppSettings.Settings["dirEnabled"].Value;
于 2013-07-11T14:08:42.210 回答
2

尝试

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

在您项目的 Web.config 中

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

于 2013-07-10T15:47:43.303 回答