我们在2.0网站上运行.NET 4.0虚拟目录时没有遇到任何问题,但相反的方式却给我们带来了一些问题。这是可以理解的,但是有办法解决这个问题吗?它们使用不同的应用程序池运行...我们可以让虚拟目录跳过网站的web.config并直接转到machine.config吗?
我们收到以下错误:
Parser Error Message: Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.
Source Error:
Line 22: </appSettings>
Line 23: <system.web>
Line 24: <compilation debug="true" targetFramework="4.0" />
Line 25: <customErrors defaultRedirect="url" mode="RemoteOnly">
Line 26: <error statusCode="404" redirect="~/404.aspx"/>
答案 0 :(得分:10)
将以下内容添加到根web.config
中<location path="." inheritInChildApplications="false">
答案 1 :(得分:5)
Is it possible to completely negate a "higher" web.config in a subfolder?
在你的root web.config中:
<location path="." inheritInChildApplications="false">
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</location>
(Ben首先得到了这个,但我会留下这个答案,因为它指出了一些替代方案)
答案 2 :(得分:1)
这是一个web.config继承问题,您无法克服<location>
指令的所有问题。
我们在其中一个应用上遇到类似错误的重复配置指令。 经过调查后,它看起来像是this issue。
简而言之,我们的根网站是ASP.NET 3.5(添加了特定库的2.0),我们有一个ASP.NET 4.0的子应用程序。
web.config继承导致ASP.NET 4.0子应用程序继承父ASP.NET 3.5应用程序的web.config文件。
但是,ASP.NET 4.0应用程序的全局(或“根”)web.config,它位于C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config和C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config(取决于你的位数),已经包含了.NET 3.5应用程序的特定于应用程序的web.config中的配置部分。
ASP.NET 4.0应用程序然后尝试将根ASP.NET 4.0 web.config和父web.config(用于ASP.NET 3.5应用程序的那个)合并在一起,并在{{中运行重复项1}} node。
<configSections>
指令不能用于阻止<location>
条目的继承。我能找到的唯一解决方案是从父web.config中删除configSections,然后