Развертывание приложения ASP.NET MVC 3 в подпапке веб-сайта ASP.NET 3.5 - PullRequest
2 голосов
/ 16 января 2012

У меня есть сайт в 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

Почему это приложение виртуального каталога пытается использовать корневой веб-сайт web.config?

1 Ответ

1 голос
/ 28 января 2012

Как сказал @BNL, я цитирую ответ от этого сайта,

Шаг 1 (только IIS 7 или IIS 7.5)

Этот шаг необходим только в операционных системах, работающих под управлением IIS 7 или IIS 7.5, в том числе Windows Vista, Windows Server 2008, Windows 7 и Windows Server 2008 R2.

Переместите определение configSections в файл Web.config.родительского приложения (приложение, которое запускает ASP.NET 2.0 или ASP.NET 3.5) в корневой файл Web.config для .NET Framework 2.0.Собственная система конфигурации IIS 7 и IIS 7.5 сканирует элемент configSections при объединении иерархии файлов конфигурации.Перемещение определения configSections из файла Web.config родительского веб-приложения в корневой файл Web.config эффективно скрывает элемент от процесса объединения конфигурации, который происходит для дочернего приложения ASP.NET 4.

В 32-битовая операционная система или для 32-битных пулов приложений, корневой файл Web.config для ASP.NET 2.0 и ASP.NET 3.5 обычно находится в следующей папке:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

В 64-битной операционной системеСистемный или для 64-битных пулов приложений, корневой файл Web.config для ASP.NET 2.0 и ASP.NET 3.5 обычно находится в следующей папке:

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG

Если вы используете как 32-битные, так и64-разрядные веб-приложения на 64-разрядном компьютере. Необходимо переместить элемент configSections в корневые файлы Web.config как для 32-разрядной, так и для 64-разрядной систем.

Когда вы помещаете элемент 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 запущено в IIS 6 или IIS 7 (или IIS 7.5).

В файле Web.config родительского веб-приложения, на котором выполняется ASP.NET 2 или ASP.NET 3.5, добавьте тег местоположения, который явно указывает (для систем конфигурации IIS и ASP.NET) что записи конфигурации применяются только к родительскому веб-приложению.В следующем примере показан синтаксис добавляемого элемента location:

<location path="" inheritInChildApplications="false" >

В следующем примере показано, как тег location используется для переноса всех разделов конфигурации, начиная с раздела appSettings и заканчиваяс разделом system.webServer.

<location path="" inheritInChildApplications="false" >

После выполнения шагов 1 и 2 дочерние веб-приложения ASP.NET 4 запустятся без ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...