Проблемы веб-приложений (ошибки web.config) HTTP 500.19 с IIS7.5 и ASP.NET v2

Это сводит всю команду с ума. Должна быть какая-то простая некорректированная часть IIS или нашего веб-сервера, но каждый раз, когда мы пытаемся запустить веб-приложение ASP.NET на IIS 7.5, мы получаем следующую ошибку...

Здесь полная ошибка:

HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration  
data for the page is invalid.

`Detailed Error Information` 
Module              IIS Web Core
Notification        Unknown
Handler             Not yet determined
Error Code          0x8007000d
Config Error
Config File         \\?\E:\wwwroot\web.config
Requested URL       http://localhost:80/Default.aspx
Physical Path 
Logon Method        Not yet determined
Logon User          Not yet determined
Config Source
   -1: 
    0: 

Аппарат работает Windows Server 2008 R2. Мы разрабатываем наше веб-приложение с помощью Visual Studio 2008.

Согласно Microsoft, код 8007000d означает синтаксическую ошибку в нашем web.config - кроме того, что проект строит и работает нормально локально. Глядя на web.config в блокноте XML, также не возникает никаких синтаксических ошибок. Я предполагаю, что это должна быть какая-то плохая конфигурация с моей стороны...?

Кто-нибудь знает, где я могу найти дополнительную информацию об ошибке? В EventViewer ничего не отображается: (

Не уверен, что еще полезно упомянуть...

Помощь приветствуется. Спасибо!

ОБНОВЛЕНИЕ! - POSTED WEB.CONFIG НИЖЕ

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

Вот строки (они появляются между тегами <System.webServer>)...

    <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </httpHandlers>

Примечание. Если я удалю строки между <httpHandlers> я STILL, получите ошибку. Я буквально должен удалить <httpHandlers> (и строки между ними), чтобы остановить получение указанной выше ошибки.

Как только я это сделал, я получаю новую ошибку 500.19. К счастью, на этот раз IIS фактически сообщает мне, какой бит web.config вызывает проблему...

    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </handlers>

Посмотрев на эти строки, выяснилось, что проблема переместилась дальше в тег <System.webServer> в тег <handlers>.

Новая ошибка также более явная и, в частности, жалуется, что она не распознает атрибут "validate" (как видно на третьей строке выше). При удалении этого атрибута он жалуется, что одна и та же строка не имеет требуемого атрибута "name". Затем добавление этого атрибута вызывает ошибку ASP.NET...

Не удалось загрузить файл или сборку "System.Web.Extensions, Версия = 1.0.61025.0, Культура = нейтральная, PublicKeyToken = f2cb5667dc123a56 'или одной из его зависимостей. Система не может найти указанный файл.

Очевидно, я думаю, что эти новые ошибки только что возникли из-за того, что я удалил теги <httpHandlers> в первую очередь - они, очевидно, необходимы приложению, поэтому остается вопрос: почему эти теги поднимают ошибку в IIS в первую очередь???

Нужно ли мне что-то установить в IIS, чтобы заставить работать с ними?

Еще раз спасибо за любую помощь.

Web.config

Вот неприятные бит нашего web.Config... Надеюсь, это поможет кому-то найти нашу проблему!

<system.Web>

<!-- stuff cut out -->

    <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56" validate="false"/>
    </httpHandlers>
    <httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </httpModules>
</system.web>

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
        <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </modules>
    <remove verb="*" path="*.asmx"/>
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=f2cb5667dc123a56"/>
    </handlers>
</system.webServer>

Ответ 1

Ага! Я победил эту проблему! Боже мой, это был зверь для кого-то вроде меня с ограниченным опытом IIS. Я действительно думал, что собираюсь провести все выходные, чтобы починить его.

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

Первое, о чем следует знать: если вы надеетесь, что это ваше решение, убедитесь, что у вас одинаковый код ошибки (0x8007000d) и источник конфигурации (-1: 0:). Если нет, то это не ваше решение.

Следующее, что нужно знать: AJAX неправильно установлен в вашем файле web.config!

Исправьте это, следуя этому руководству:
http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

Затем установите расширения AJAX 1.0 на свой производственный сервер по этой ссылке:

http://www.asp.net/ajax/downloads/archive/
Обновление: похоже, Microsoft удалила вышеуказанную страницу :(

Это!

Ответ 2

У меня были эти точные симптомы, и мой вопрос был похож на Питера. Создал существующий проект на новом сервере. Мой проект ссылался на модуль перезаписи URL-адреса IIS7, но он еще не был установлен на новом сервере. Установка исправила мою проблему.

Вы можете использовать установщик Microsoft Web Platform для его установки. Выполните его, выберите "Продукты", в левом меню выберите "Сервер" и найдите URL Rewrite в списке и установите его.

Или вы можете скачать его здесь.

Ответ 4

Та же проблема на сервере 2016, IIS 10, ошибка 500.19. Я установил модуль перенаправления, и он работал. Я не знаю, почему это не было включено по умолчанию.

https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads

Чтобы было ясно, похоже, что web.config из IIS 7 будет работать или предназначен для работы, но отсутствие этого модуля дает действительно странную и бесполезную ошибку. Googling ведет вас на страницу Microsoft, которая настаивает на том, что ваш сайт поврежден или ваш web.config поврежден. Ни то, ни другое, похоже, не так.

Эта бесполезная страница здесь: https://support.microsoft.com/en-us/kb/942055

Ответ 5

Была та же проблема, что и выше, такой же код ошибки и т.д. Настройка локального веб-сайта в Windows 8. После долгих поисков было обнаружено, что нам не хватало перезаписи URL. После загрузки все было в порядке.:)

Ответ 6

Я просто добавляю ответ, потому что я часами пытался решить те же самые симптомы (но разные проблемы):

Возможной причиной является x86 dll в 64-битном пуле приложений, решение состоит в том, чтобы включить 32-битные приложения в настройках пула приложений.

Ответ 7

Для меня перерегистрация asp.net для iis сделала трюк. Надеюсь, это поможет кому-то еще.

aspnet_regiis.exe -i

Ответ 8

Подводя итог на основе ответов здесь и в другом месте:

  • Проверьте версию пула приложений .NET(например, 2.0 vs 4.0)
  • Убедитесь, что установлены все модули, привязанные к IIS. В этом случае это расширения AJAX (вероятно, не так в наши дни), но URL Rewrite является общим.

Ответ 9

Другой способ получить 500.19 errot без видимых причин - отсутствие каталогов и/или нарушенных разрешений на них.

В случае возникновения этого вопроса, я считаю, что вопрос задает вопрос о полной версии IIS. Я предполагаю это из-за этой строки:

Config File         \\?\E:\wwwroot\web.config

Установщик IIS обычно создает для вас wwwroot и эту корневую папку по умолчанию для всех веб-сайтов и точку монтирования для виртуальных каталогов. Он всегда существует, поэтому проблем нет, обычно вам это неинтересно.

Так как файлы web.config являются иерархическими, вы можете поместить там главный файл web.config и установить некоторые корневые настройки, и все сайты наследуют его. IIS проверяет, существует ли этот файл и пытается его загрузить.

Однако первая интересная часть:

Этот каталог будет существовать, если вы правильно установили IIS. Если он не существует, вы получите 500-классную ошибку. Однако, если вы играете с разрешениями на файлы/каталоги, особенно "расширенные", вы можете случайно случайно отклонить учетную запись службы IIS от сканирования/чтения содержимого этого каталога. Если IIS не может проверить, существует ли этот wwwroot\web.config или существует, и IIS не может открыть и прочитать его - bam - ошибка 500-класса.

Однако для полного IIS это маловероятно. Разработчики/админы, работающие с полным IIS, обычно неохотно относятся к игре с wwwroot, поэтому он обычно корректно настроен.

Однако, на IIS Express..

Обычно IIS Express "просто работает". Часто разработчики, использующие IIS Express, часто не знают, насколько внутренне он похож на реальный IIS.

Вы можете легко наткнуться на то, что IIS Express имеет свой собственный файл applicationHost.config, а VS создает и управляет им для вас (правильно, в некоторой степени), и этот вид открывателя говорит вам, что это не так просто и нажмите и выберите, как кажется сначала.

Помимо этого конфигурационного файла VisualStudio также создает пустую структуру каталогов в вашей папке Documents. Если я правильно помню, IIS Express считает эти папки корневыми каталогами вашего сайта (ов), на которых смонтированы виртуальные каталоги с вашим кодом.

Позже, как и IIS, когда IIS Express запустится, он ожидает этих папок для существования и проверяет наличие там файлов root.config. Файлы сайта web.config. Почти всегда эти файлы web.config отсутствуют - и это нормально, потому что вы их не хотите - у вас есть ваше ** приложение web.config, они размещаются с остальной частью содержимого в виртуальных каталогах.

Теперь вторая интересная часть: IIS Express ожидает, что пустые каталоги. Они могут быть пустыми, но они должны существовать. Если они не существуют, вы получите сообщение об ошибке 500-го уровня, сообщающее вам, что файл "web.config" по этому пути не может быть доступен.

Впервые я столкнулся с этой проблемой, когда я очищал свой жесткий диск. Я обнаружил, что папка "документы\веб-сайты", полная мусора, я узнал несколько летних проектов, над которыми я больше не работаю, все пустые, а не один файл, поэтому я удалил все это. Через неделю - bam - я не могу запускать/отлаживать какие-либо сайты, на которых я работал в данный момент. Ошибка была 500.19, не удалось прочитать файл конфигурации.

Итак, если вы используете IIS Express и видите ошибку 500-го уровня, рассказывающую о конфигурации чтения, внимательно проверьте сообщение об ошибке и прочитайте все указанные пути. Если вы видите что-то вроде:

c:\users\user\documents\visual studio 2013\projects\WebProject1\WebProject1.web\web.config
c:\users\zeshan.munir\documents\visual studio 2015\projects\WebProject1\WebProject1.web\web.config
c:\users\zeshan.munir\documents\visual studio 2017\projects\WebProject1\WebProject1.web\web.config
etc..

Идите туда, где указывается ошибка, убедитесь, что эти папки существуют, убедитесь, что учетная запись рабочего стола IIS может перемещаться и читать их, и если вы заметите, что что-то не так, возможно, это будет так.

BTW. В VisualStudio на ProjectProperties/Web есть кнопка "Создать виртуальный каталог". Это, по сути, делает это, поэтому вы можете попробовать сначала, но IIRC он может также иногда очищать/перезаписывать/заменять разделы конфигурации в файле applicationHost.config, поэтому будьте осторожны с этой кнопкой, если у вас есть какие-либо пользовательские настройки там.

Ответ 10

В моем случае что-то не так с установкой Windows Server Hosting Bundle.NET Core.

Я установил это и перезапустил IIS с помощью ("net stop was/y" и "net start w3svc") после установки, но я получу ошибку 500.19 с кодом ошибки 0x8007000d и источником конфигурации -1: 0:.

Мне удалось решить эту проблему, исправив установку .NET Core Windows Hosting Bundle и перезапустив IIS с помощью команд, упомянутых выше.

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

Ответ 11

Это может быть или не быть связано.... Я начал с той же ошибки, упомянутой выше, начал поиск в Google, внесении изменений, получении новых ошибок, бесконечном цикле.

Изменение, вызванное этой ошибкой, связано с делегированием функций в диспетчере IIS в разделе "Управление" на сервере. Извините, я не помню, какой из них я изменил, но googling может помочь.

Это заставило меня пройти первую ошибку в совершенно новый поток других, некоторые совершенно бессмысленные. (Я получаю одну ошибку при работе в виртуальном каталоге, преобразование ее в приложение дало бы еще одну ошибку, etec и т.д.). Что, наконец, решило эту серию ошибок: Диспетчер IIS, Пулы приложений, DefaultAppPool, Включить 32-разрядные приложения = True

Я запустил это приложение в 32-битном окне Windows XP, и теперь я запускаю его в 64-битном окне Windows 7.

Так что, надеюсь, это помогает кому-то другому.

Ответ 12

Прокомментируйте следующие строки в файле web.config.

<modules>
    <!--<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>-->
</modules>

<handlers>
    <remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
    <!--<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <add name="ScriptResource" verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>-->
</handlers>

Это будет работать.

Ответ 13

Мой IIS 7.5 не понимает тег в web.config В VS 2010 также подчеркивается этот тег. Проверьте свой файл конфигурации, чтобы найти все подчеркнутые теги. Я помещаю его в комментарий, и ошибка уходит.

Ответ 14

У меня была такая же ошибка. У меня был сайт IIS с .net framework версии 2.0, но моему приложению понадобилось 4.0. Я изменил версию, и она сработала.

Проводка только как напоминание, если у кого-то может быть такая же проблема.

Ответ 15

Эта прекрасная подробная ошибка все еще присутствует в 2019 году! Я просто хочу добавить, что если ваш web.config действителен и доступен, он, скорее всего, является проблемой зависимости.

Как упоминалось в OP, это был модуль AJAX, а другими, как правило, модуль Rewrite. Просто следите в своем файле web.config, на какие модули и библиотеки ссылаются ваши теги, поскольку код ошибки 0x8007000d может быть примерно ЛЮБОЙ зависимостью.

В моем случае я не осознавал, что пакет AspNetCore отсутствует и должен был быть установлен! Так счастлив, что нашел этот пост!

Ответ 16

У меня была такая же проблема в Windows 7.

Решение заключалось в том, чтобы перейти к базовым настройкам > connect as > specific user - и войти в систему как пользователь, а не по умолчанию 'pass-through'

Это исправило проблему для меня.

Ответ 17

Windows 7

Попробуйте это,

запустите cmd как Admin.

Unistall all iis.

start /w pkgmgr.exe /uu:IIS-WebServerRole;WAS-WindowsActivationService

Переустановите iis и нормальный режим работы

Ален

Ответ 18

Я получил эту ошибку, поместив тег <customErrors> внутри <system.webServer> вместо <system.web>, где он принадлежит. В теге <customErrors> была небольшая кривая, но я не заметил ее сразу.

Ответ 19

Убедитесь, что все функции IIS включены правильно.

  • Откройте функции Windows (включите или выключите функции Windows).
  • Прокрутите вниз до Информационные службы Интернета

  • Откройте раскрывающийся список "World Wide Web plus"

  • Откройте окно "Функции разработки приложений" плюс раскрывающийся список
  • Вручную отметьте все последующие флажки, затем нажмите ОК

enter image description here

Ответ 20

Причиной моей проблемы была приведенная ниже конфигурация:

    <rewrite>
      <rules>
        <clear />
        <rule name="Redirect to HTTPS" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^.*spvitals\.com$" />
            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
        </rule>
      </rules>
    </rewrite>

Примечание. Я удалил этот раздел для локального тестирования, так как он хорошо работает в Azure.