这个问题似乎已经被问到了很多,但实际上没有一个能解决我的问题。我有一个带有区域的ASP.NET MVC4应用程序。在这个区域内,我有一个带有重写appsettings的web.config。尝试在区域内的控制器中读取这些设置时,似乎没有拾取这些设置。
-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无效吗?
答案 0 :(得分:2)
IIS将根据URL加载web.config,而不是基于路由请求执行的代码。
您可以创建一个模仿所需路径的空文件夹结构,并在那里添加配置文件。如果这不起作用,您可以在主配置文件中使用<location>
标记 - 但位置标记中的路径也必须与URL匹配,而不是代码。