Развертывание IIS7 - дубликат раздела system.web.extensions / scripting / scriptResourceHandler


209

При попытке развернуть веб-сайт .net 3.5 в пуле приложений по умолчанию в IIS7 с разделом Framework, установленным на 4.0, я получаю следующую ошибку.

Существует дубликат раздела system.web.extensions / scripting / scriptResourceHandler.

Комментирование оскорбительных строк тоже не помогло. Любые указатели на то, что мне нужно сделать или посмотреть?

Ответы:


338

Если вы планируете развернуть IIS с пулом приложений, работающим в .net 4.0, вам нужно очистить файл web.config, который включает все разделы Определения, указывающие на .net 3.5. Это происходит потому, что эти определения разделов уже включены в корневой web.config в .NET 4.0 (см.% Windir% \ microsoft.net \ framework \ v4.0.30319 \ config \ machine.config), который включает всю систему. web.extensions объявлен уже.

Еще одно быстрое решение - установить для пула приложений значение 2.0, как это делает ваша машина разработки.


Спасибо. На самом деле я решил этот обходной путь после того, как немного
повозился с ним

3
Спасибо за объяснение этого. Я продолжал видеть решение для удаления раздела из файла конфигурации, и мне интересно, "как вырезать части вашего файла конфигурации решение"?
Адам Брусс

13
МОЙ ПРИЛОЖИТЕЛЬНЫЙ БАССЕЙН БЫЛ НА 4.0 ВМЕСТО 2.0!
RolandoCC

1
Это было легко, переключите этот старый сайт на пул приложений 2.0 и сделайте это! Спасибо!
mgrenier

1
У меня просто работало удаление раздела .net 3.5 в web.config
Anand

49

Решением для меня было изменить версию платформы .NET в пулах приложений с v4.0 на v2.0 для пула приложений по умолчанию:

введите описание изображения здесь


13
аааа, а если на самом деле вы используете .NET 4.0 в приложении?
Майкл Паукуонис

3
@MichaelPaulukonis У меня была эта проблема, оказалось, что в корневом веб-сайте был web.config, от которого унаследовал мой веб-сайт.
Guanome

@MichaelPaulukonis, пффф, как это случится!
DaveDev

У меня была эта проблема, когда мое приложение было обновлено с 3.5 до 4.0, пул приложений был корректно обновлен, но файл web.config устарел. Web.config пытался добавить все те группы разделов, которые начиная с 4.0 являются нативными и не требуют явного добавления.
drizin

48

Если, как и я, вам нужно нацелиться на v4, но вы можете собрать только с .net 3.5, следуйте инструкциям здесь . Просто замените в вашем web.config весь контент на <configSections>:

<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions,  Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    </sectionGroup>
  </sectionGroup>
</sectionGroup>


3
Ваше единственное решение, которое решило мою ошибку! Большое спасибо!
Девдатта Тенгше

1
Это тоже решило мою проблему. Сервер был обновлен IIS6 до IIS7.5. На IIS6 он работал под v4.0, но IIS7.5 нуждался в этом изменении web.config.
Иоанна

это было потрясающе
mzonerz

Значение в PublicKeyToken чувствительно к регистру (и должно выглядеть так же, как в ответе). У меня был мой в верхнем регистре, и это не сработало.
Бьёрн,

3

Проблема заключается в том, что у вас есть проблемы с доступом к исходной базе данных .net 4.0 Решение: введите сервер IIS для администратора. Это очень важно! [Введите описание изображения здесь] [1] и получите! [Введите описание изображения здесь] [2]

Решение проблем, связанных с установкой и администрированием, центральное SharePoint 2010

----- через Google Translate -----

Проблема в том, что пул по умолчанию. Решение Net 4.0: введите сервер IIS Manager, чтобы установить значения в правой части пулов приложений. [Введите описание изображения здесь] [1] и измените версию фреймворка! [Введите описание изображения здесь] [2]

Это должно решить проблему установки центра администрирования SharePoint 2010


22
Добро пожаловать в StackOverflow! Если вы не обладаете достаточным знанием английского языка, пожалуйста, запустите ваши ответы через Google Translate . Сообщество улучшит любые странные фразы путем редактирования. Спасибо за ваш ответ. ||||| с помощью Google Translate ||||| Bienvenido переполнение стека! Не пользуйтесь достаточным преимуществом, пользуйтесь услугами, переводите Google Translate . La comunidad mejorará frases extrañas en la edición. Gracias por su respuesta.
Андрей Козак


3

Necromancing.
Если в вашем файле web.config нет ни одной config-секции system.web.extensions или записей обработчиков / модулей, эта проблема вызвана тем, что вы / кто-то еще скопировал VisualStudio-Project (2013/2015/2017) , скрыв -файлы не отображаются .

Из-за этого он будет не только копировать .git, но и .VSсодержать файл applicationhost.config IIS-Express , который указывает на файлы web.config по несуществующим путям (или, что еще хуже, по существующим путям, но нет одинакового контента) ...

Решение.
Удалите файл applicationhost.config в папке .VS.
Или просто удалите папку .VS.
Visual Studio создаст его заново.


Отличное объяснение
Уильям Белло

2

Мое приложение было приложением ASP.Net3.5 (с использованием версии 2 платформы). Когда приложения ASP.Net3.5 были созданы, Visual Studio автоматически добавила scriptResourceHandler в файл web.config. Более поздние версии .Net помещают это в machine.config. Если вы запустите приложение ASP.Net 3.5 с помощью пула приложений версии 4 (в зависимости от порядка установки это пул приложений по умолчанию), вы получите эту ошибку.

Когда я перешел на пул приложений версии 2.0. Ошибка ушла. Затем мне пришлось иметь дело с ошибкой при обслуживании WCF .svc:

Ошибка HTTP 404.17 - не найден Запрошенное содержимое выглядит как сценарий и не обрабатывается статическим обработчиком файлов

После некоторого расследования кажется, что мне нужно было зарегистрировать обработчик WCF. используя следующие шаги:

  1. откройте командную строку Visual Studio (от имени администратора)
  2. перейдите к «C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation»
  3. Запустите servicemodelreg -i


1

В моем случае это произошло после того, как я преобразовал все решение (используя расширение под названием Target Framework Migrator) в 4.6.2, но в итоге отменил изменения и вернулся к 3.5 (решение имеет версию TFS). Чтобы решить эту проблему, я преобразовал только проблемный проект (который использовал IIS Express для запуска) в 4.6.2, а затем обратно в 3.5.


Спасибо. кажется, что возврат назад и отмена изменений не приведут приложение к правильному состоянию .NET 3.5 правильно.
Иман

0

Еще один способ избежать этой проблемы, которая может помочь другим, - это, если возможно, построить веб-службу .net до версии 4.0 или выше.


0

В моем случае у меня было 2 разных приложения, использующих один и тот же пул приложений. Первый использовал фреймворк .net4.5, а новый - 2.0. Когда я изменил второе приложение на его собственный пул приложений, оно начало нормально работать без изменений в файле web.config.


0

Мое решение было отчасти глупым.

  • Я установил копию .net 3.5

  • Создал другой пул приложений и выбрал .net 3.5 (в раскрывающемся списке написано 2.0.5077).

  • Добавил мой сайт в этот пул приложений

  • Переработал старый и новый пулы и сайт начал работать.

Дело дошло до того, что я не установил 3.5, хотя функции включения Windows сказали, что я сделал, и создал еще один пул приложений для использования. Я надеюсь, что это помогает другим.


0

В моем случае я хотел вручную добавить правило urlrewrite и не мог видеть очевидную ошибку (я пропустил <rules>тег):

неверный код:

    <rewrite>
      <rule name="some rule" stopProcessing="true">
        <match url="some-pattenr/(.*)" />        
        <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
      </rule>
    </rewrite>    

  </system.webServer>
</configuration>

правильный код (с тегом rules):

    <rewrite>
      <rules>
        <rule name="some rule" stopProcessing="true">
          <match url="some-pattenr/(.*)" />        
          <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
</configuration>

0

Я решил это, выполнив следующие шаги:

  1. Я создал новую группу приложений в IIS.
  2. Откройте расширенные настройки для сайта или веб-приложения, в котором возникла эта проблема.
  3. И установите группу нового приложения.

Здесь у вас есть изображения этих шагов:

Создать новую группу приложений

После создания группы приложения

Установите группу приложений на вашем сайте или в веб-приложении.


0

Это сообщение об ошибке появляется в различных ситуациях.

В моем случае поверх файла Web.Config моего приложения у меня был дополнительный файл Web.Config в корневой папке (C: \ Inetpub \ www.root). Вероятно, после некоторого тестирования я оставил их там, я забыл все об этом и не мог понять, в чем проблема.

Удаление это решило проблему для меня.


0

Это может быть неправильный ответ для вас. Но это был первый удар по Google, когда я попытался решить свою проблему. С этим сказал ...

У меня тоже самое сообщение об ошибке, но когда я пытался запустить IIS Express через Visual Studio.

Моя проблема заключалась в том, что я по ошибке отправил свой applicationhost.config в TFS. Позже, когда я попытался запустить проект на своем ноутбуке после получения последних коммитов. вот когда произошла ошибка.

Я обнаружил, что путь к виртуальному каталогу был неверным.

<virtualDirectory path="/" physicalPath="C:\Users\giddan\Documents\Visual Studio 2015\Projects\ProjectName\DeV.ProjectName\DeV.ProjectName.Web" />

Надеюсь, что это поможет кому-нибудь!

Это мой первый пост, так что будьте нежнее :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.