4

这个问题似乎已经被问了很多,但没有一个真正为我解决问题。我有一个带有区域的 ASP.NET MVC4 应用程序。在这个区域内,我有一个 web.config 覆盖了 appsettings。尝试在该区域内的控制器中读取这些设置时,似乎没有选择这些设置。

-MyApp
    -Areas
        -MyArea
            -Controllers
                -MyController
            -Web.config
    -Web.config

MyApp\Web.config我有:

<appSettings>
    <add key="DefaultDisplayMode" value="Configuration" />
</appSettings>

MyApp\Areas\MyArea\Web.config我有:

<appSettings>
    <add key="DefaultDisplayMode" value="Review" />
    <add key="SubSetting" value="Testing" />
</appSettings>

如果MyController我查询应用程序设置,我会看到:

DefaultDisplayMode: Configuration

我希望看到:

DefaultDisplayMode: Review
SubSetting: Testing

我都试过了:

System.Configuration.ConfigurationManager.AppSettings["..."]
System.Web.Configuration.WebConfigurationManager.AppSettings["..."]

我什至尝试了以下(顶部)结构,但没有成功:

-MyApp
    -Areas
        -MyArea
            -Controllers
                -MyController
                -Web.config
            -Web.config
    -Web.config

有人知道为什么我的子目录 appSettings 不起作用吗?

4

1 回答 1

2

IIS 将基于 URL 加载 web.config,而不是基于您的路由请求执行的代码。

您可以创建一个模拟所需路由的空文件夹结构并在其中添加配置文件。如果这不起作用,您可以<location>在主配置文件中使用标记 - 但位置标记中的路径也必须匹配 URL 而不是代码。

于 2013-02-19T17:02:37.697 回答