Подтвердить что ты не робот

Шаги по расследованию причины повторяющегося раздела Web.Config

Симптомы

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

"There was an error while performing this operation....   Filename... web.config...    Error: There is a duplicate..."

  • При просмотре 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 root.
    • "C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config"
    • Вложенная папка "Виды" в приложении ASP.Net MVC.
  • Исправлен исходный код другой машины. Установите папку приложения IIS 7. Нет проблем с Web.config.

Вопрос

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

Ответ 1

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

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

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

Ответ 2

Если вы используете DotNetOpenAuth библиотеку на своем веб-сайте, а ваш сайт - .NET 4.0 app, вам нужно убедиться, что эта строка NOT в 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) визуальный студийный сервер разработки (он же Cassini).. вы не получите эту проблему/проблему. Это только тогда, когда вы переместите свой код на IIS7 express или полный IIS7, эта проблема возникнет.

Итак, удалите эту единственную строку, а затем получите счастливый танец.

Ответ 3

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

Ответ 4

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

  • Переместите разделы в файл machine.config для ASP.NET 2.0
  • Или удалить разделы из файла machine.config для ASP.NET 4.0

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

Посмотрите:)

Ответ 6

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

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

Ответ 7

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

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

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