Действия по расследованию причины появления дубликата раздела Web.Config - PullRequest
40 голосов
/ 19 марта 2010

Симптомы

  • В IIS 7 и Dot Net 2.0 Интегрированный пул приложений: двойной щелчок для просмотра любого раздела web.config приводит к диалоговому окну ошибки, подобному этому:

  • При просмотре URL-адреса отображается: Внутренняя ошибка сервера «Http 500.19». Есть дубликат ... 'system.web.extensions / scripting / scriptResourceHandler'раздел определен .... "

  • Запуск приложения из VS 2008 и " Невозможно начать отладку на веб-сервере ... " диалоговое окно

Инфраструктура

  • Веб-сервер: IIS 7, работающий в Windows 7 x64
  • ASP.Net MVC2
  • Пул приложений: Dot Net 2.0 интегрирован
  • VS 2008

Проверенные вещи

  • Проверяется, не возникла ли проблема в других каталогах приложений IIS нана той же машине.
  • Удалено и повторно добавлено приложение в IIS.
  • Возвращено к предыдущим версиям файла web.config.
  • Проверена последняя рабочая версия исходного кода.Перестроил приложение, добавил новый каталог приложения для него и попытался просмотреть содержимое web.config из IIS.
  • Поиск файлов web.config, которые могут иметь повторяющиеся разделы в:
    • Корне Inetpub.
    • "C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config"
    • Подпапка "Views" приложения ASP.Net MVC.
  • Получен исходный код другого компьютера разработчика.Настройте папку приложения IIS 7.Нет проблем с Web.config.

Вопрос

  • Если причиной этой ошибки является другой файл web.config, куда еще мне обратиться?
  • Есть ли другие причины для этих симптомов?

Ответы [ 7 ]

35 голосов
/ 19 марта 2010

Добавьте это в контрольный список.

  • Убедитесь, что проверяемый файл machine.config находится в той же платформе Dot Net, что и пул приложений, в котором выполняется ваше приложение.

В моем случае пулы приложений по умолчанию были изменены с Dot Net 2.0 на Dot Net 4.0. Это изменило корневой файл machine.config до версии 4.0. Эта версия содержит раздел «scriptResourceHandler» и другие. Таким образом, дубликат раздела предупреждения.

7 голосов
/ 15 марта 2011

Если вы используете на своем веб-сайте библиотеку DotNetOpenAuth И ваш веб-сайт имеет значение .NET 4.0 app, то вам необходимо убедиться, что эта строка НЕ в вашем web.config

<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

Я установил DNOA, используя NuGet , и он автоматически добавил эту строку в мой файл web.config. Поэтому мне пришлось удалить его.

Кстати, люди, если вы используете встроенный (hella-crappy) сервер разработки Visual Studio (он же Cassini) .. вы не получите эту проблему / проблему. Эта проблема возникает только тогда, когда вы переместите свой код в IIS7 express или full IIS7.

Так что удалите эту единственную строку и затем станьте счастливым танцующим.

3 голосов
/ 18 ноября 2010

Решение состоит в том, чтобы изменить ваш machine.config.

  1. Перемещение разделов на machine.config для ASP.NET 2.0
  2. Или удалите разделы из machine.config для ASP.NET 4.0

Здесь люди из www.asp.net дают возможные исправления: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

Взгляните:)

3 голосов
/ 29 марта 2010

В IIS 7 измените настройку «Пулы приложений» для appPool с именем «Classic .NET AppPool» на V2.0. Сделайте это, щелкнув правой кнопкой мыши Классический .NET AppPool и выбрав «Основные настройки ...» затем сбросьте версию .NET Framework на V2.0.xxxxx. Перезапустите пул приложений и перезапустите веб-сайт, и он должен нормально работать.

1 голос
/ 07 декабря 2011

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

Например, у меня был дубликат раздела loggingConfiguration, который, как представляется, является результатом родительского и дочернего приложения, использующего разные версии Microsoft Enterprise Library

1 голос
/ 03 января 2011

Это устранение неполадок MS также может помочь: http://support.microsoft.com/kb/942055

0 голосов
/ 21 марта 2010

Возможно, стоит открыть файл applicationHost.config:

C:\Windows\System32\inetsrv\config\applicationHost.config

В частности, найдите <location> теги, которые соответствуют имени сайта (может быть несколько записей) и посмотрите, есть ли там объявленные дубликаты scriptResourceHandler разделов. Я также проверил бы содержимое <location path="">.

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