在ASP.NET 3.5网站子文件夹下部署ASP.NET MVC 3应用程序

时间:2012-01-16 12:13:53

标签: asp.net asp.net-mvc asp.net-mvc-3 iis iis-7

我在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?

1 个答案:

答案 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应用程序将启动而不会出错。