我在IIS 7中有一个网站,ASP.NET 3.5运行良好。我刚在这个网站服务器上安装了.NET 4.0。现在,我已经在本网站上添加了一个虚拟目录(是的,我将其转换为应用程序)和Asp.Net 4.0 AppPool。当我访问此虚拟目录时,我得到了
There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined
为什么这个虚拟目录应用程序试图使用root网站的web.config?
答案 0 :(得分:1)
正如@BNL所说,我引用了this网站的答案,
步骤1(仅限IIS 7或IIS 7.5)
此步骤仅适用于运行IIS 7或IIS 7.5的操作系统,包括Windows Vista,Windows Server 2008,Windows 7和Windows Server 2008 R2。
将父应用程序(运行ASP.NET 2.0或ASP.NET 3.5的应用程序)的Web.config文件中的configSections定义移动到.NET Framework 2.0的根Web.config文件中。 IIS 7和IIS 7.5本机配置系统在合并配置文件的层次结构时扫描configSections元素。将configSections定义从父Web应用程序的Web.config文件移动到根Web.config文件有效地隐藏了子ASP.NET 4应用程序发生的配置合并过程中的元素。
在32位操作系统或32位应用程序池上,ASP.NET 2.0和ASP.NET 3.5的根Web.config文件通常位于以下文件夹中:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG
在64位操作系统或64位应用程序池上,ASP.NET 2.0和ASP.NET 3.5的根Web.config文件通常位于以下文件夹中:
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG
如果在64位计算机上同时运行32位和64位Web应用程序,则必须将configSections元素向上移动到32位和64位系统的根Web.config文件中。 / p>
将configSections元素放在根Web.config文件中时,请在配置元素后面立即粘贴该部分。以下示例显示了完成移动元素后根Web.config文件的顶部部分应该是什么样的。
注意在以下示例中,为了便于阅读,已经包装了行。
<?xml version="1.0" encoding="utf-8"?>
<!-- The root web configuration file -->
<configuration>
<configSections>
<sectionGroup name="system.web.extensions"
type="System.Web.Configuration.SystemWebExtensionsSectionGroup,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting"
type="System.Web.Configuration.ScriptingSectionGroup,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler"
type="System.Web.Configuration.ScriptingScriptResourceHandlerSection,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" requirePermission="false"
allowDefinition="MachineToApplication" />
<sectionGroup name="webServices"
type="System.Web.Configuration.ScriptingWebServicesSectionGroup,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization"
type="System.Web.Configuration.ScriptingJsonSerializationSection,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" requirePermission="false"
allowDefinition="Everywhere" />
<section name="profileService"
type="System.Web.Configuration.ScriptingProfileServiceSection,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" requirePermission="false"
allowDefinition="MachineToApplication" />
<section name="authenticationService"
type="System.Web.Configuration.ScriptingAuthenticationServiceSection,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" requirePermission="false"
allowDefinition="MachineToApplication" />
<section name="roleService"
type="System.Web.Configuration.ScriptingRoleServiceSection,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" requirePermission="false"
allowDefinition="MachineToApplication" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
第2步(所有版本的IIS)
无论ASP.NET 4子Web应用程序是在IIS 6上运行还是在IIS 7(或IIS 7.5)上运行,都需要执行此步骤。
在运行ASP.NET 2或ASP.NET 3.5的父Web应用程序的Web.config文件中,添加一个位置标记,该标记明确指定(对于IIS和ASP.NET配置系统)配置条目仅适用于父Web应用程序。以下示例显示了要添加的location元素的语法:
<location path="" inheritInChildApplications="false" >
以下示例显示了如何使用location标记来包装从appSettings部分开始并以system.webServer部分结尾的所有配置部分。
<location path="" inheritInChildApplications="false" >
完成步骤1和2后,子ASP.NET 4 Web应用程序将启动而不会出错。