区域中的子Web.config

时间:2013-10-07 09:05:34

标签: c# asp.net-mvc-4 web-config

我正在开发一个巨大的MVC 4项目。我正在使用Area,这很棒。

但是,我想,对于每个区域,使用自定义Web.config。

例如,这是我的结构:

Root
Web.config
|
----Areas
--------MyArea_1
--------MyArea_2
----Web.config

在我的根Web.config中,我有所有的连接。在我的Sub Web.config中,我想添加仅涉及区域的“appSettings”。

在我的子Web.config中,例如:

<appSettings>
    <add key="MyArea_1_Param1" value="1"/>
    <add key="MyArea_1_Param2" value="2"/>

    <add key="MyArea_2_Param1" value="1"/>
</appSettings>

目前,我已将所有参数放在根Web.config中。

如何在不同的Web.config之间建立链接?

------ -------- UPDATE

我尝试将此代码放在我的Sub Web.config中:

<?xml version="1.0" encoding="utf-8"?>
<location path="MyArea_1">
    <appSettings>
        <add key="MyArea_1_Param1" value="1"/>
        <add key="MyArea_1_Param2" value="2"/>
    </appSettings>
</location>

我把这个文件放在这里:

Root
Web.config
|
----Areas
--------MyArea_1
--------MyArea_2
----Web.config <- Here

我已经在这里尝试:

Root
Web.config
|
----Areas
--------MyArea_1
------------Web.config
--------MyArea_2

但是当我尝试读取键值“MyArea_1_Param1”时,我仍然会收到“NullReferenceException”

我的代码用于读取键值:

ConfigurationManager.AppSettings["MyArea_1_Param1"].ToString()

2 个答案:

答案 0 :(得分:4)

您可以使用:

<location path="myarea">
  <appsetttings>
    <add key="MyArea_1_Param1" value="1"/>
  </appsettings>
</location>

并将这些web.configs放在区域目录

要访问给定区域中的web.config,您可以使用以下代码:

System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/Areas/MyArea1/Views/Web.config").AppSettings.Settings["MyArea1_Param1"].Value

答案 1 :(得分:1)

默认情况下,每个区域的Web.config文件都放在此区域的Views文件夹中。您可以使用它来添加仅在该特定区域中可见的自定义设置。

<强>更新

你见过这个answer吗?