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


146

Это сводит всю команду с ума. Должна быть какая-то простая неправильно настроенная часть 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 Notepad также не вызывает никаких синтаксических ошибок. Я предполагаю, что это, должно быть, какая-то плохая конфигурация с моей стороны ...?

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

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

Помощь очень ценится. Спасибо!

ОБНОВЛЕНИЕ! - РАЗМЕЩЕННЫЙ ВЕБ-КОНФИГ НИЖЕ

Хорошо, так как я разместил оригинальный вопрос выше, я отследил точные строки в 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>я все еще получаю ошибку. Я буквально должен удалить <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» (как видно в третьей строке выше). Удаление этого атрибута заставляет жаловаться, что в той же строке нет обязательного атрибута «имя». Добавление этого атрибута вызывает ошибку ASP.NET ...

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

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

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

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

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>

Удалить все комментарии в web.config. Они начинаются с <!-- и заканчиваются -->.
Алекс Баньолини

Woot. это как-то связано с <httpHandlers>
Чак Ле Батт

Это работает в интегрированном режиме? Если это так, попробуйте классический режим.
Джереми МакГи

@ Алекс - я удалил все комментарии, это не помогло. Спасибо за предложение, хотя.
Чак Ле Бат

@ Джо, я не думаю, что я собираюсь опубликовать весь web.config. Вероятно, не будет мудрым ...: - /
Чак Ле Бат

Ответы:


263

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

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

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


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

1
Да ... я тоже, у меня был .net 3.5, поэтому AJAX уже был включен, но переписывание не.
WildJoe


5
Прошло 4 года, и это все еще проблема. В ошибке нет абсолютно ничего, чтобы указывать источник проблемы. Я также перенес существующее решение на новый сервер, на котором еще не был установлен модуль, и только случайно наткнулся на этот ответ, так что спасибо большое, когда я вырывал волосы!
ProNotion

4
Проблема сохраняется с Server 2016, нет функции / модуля для установки с надписью «URL Rewrite». Вы должны использовать его для установки, и после этого мой сайт работал (или, по крайней мере, перестал выдавать эту проблему).
Роб

41

После борьбы с этим в течение дня на новой машине я наткнулся на следующие ссылки. Мне не хватало модулей перезаписи. Это исправило все.

http://forums.iis.net/t/1176834.aspx

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/


1
+1. В файле web.config, который я взял из TFS, были <rewrite>теги, но у меня не было установлено urlrewrite. Я закомментировал <rewrite>материал, и мой сайт скомпилирован и загружен сразу.
Пит

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

Как установить Url Rewrite в Visual Studio для IIS Express?
Дима

40

Ага! Я победил эту проблему! Боже мой, это был зверь для кого-то вроде меня с ограниченным опытом 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, похоже, удалила вышеуказанную страницу :(

Это оно!


1
Спасибо! Расширения AJAX были проблемой. Я прокомментировал этот раздел, поскольку AJAX теперь встроен в 3.5
jdiaz

1
Похоже, Microsoft разорвала эту первую ссылку для настройки ASP.NET AJAX.
Роб Соберс

1
Нашел зеркало старого контента. Так раздражает то, что документация MS исчезает так часто.
Чак Ле Бат

4
Ваш ответ предполагает, что эта ошибка относится ТОЛЬКО к Ajax, но она относится и к urlrewrite, что означает, что ошибка, скорее всего, относится только к любому предложению, зависящему от модуля, который недоступен.
rainabba

@ Чак, Что значит "Я чувствую себя Рокки" ?
Pacerier

16

Та же проблема на сервере 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


12

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


Чувак, ты спас мне много времени ... Здорово !!
PhillyNJ

Похоже, это сообщение об ошибке совершенно бесполезно!
Кен Кинан

8

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

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


Этот ответ действителен и для ошибки 500.19 при настройке Umbraco CMS.
aron.lakatos

4

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

aspnet_regiis.exe -i

4

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

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

4

Еще один способ получить ошибку в 500,19 без видимой причины - пропустить каталоги и / или нарушить права доступа к ним.

В случае этого вопроса, я полагаю, что вопрос задает о полной версии 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 ожидает , что эти папки существуют, и проверяет наличие корневых файлов web.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 может просматривать и читать их, и если вы заметите, что что-то не так, возможно, это будет так.

КСТАТИ. В VisualStudio в ProjectProperties / Web есть кнопка «Создать виртуальный каталог». Он, по сути, делает именно это, поэтому вы можете попробовать это в первую очередь, но IIRC может также несколько раз очистить / перезаписать / поменять разделы конфигурации в файле applicationHost.config, поэтому будьте осторожны с этой кнопкой, если у вас есть какие-либо пользовательские настройки.


3

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

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

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

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


1
Это также сработало для меня, вот блог MSDN об установке пакета .NET Core для Windows Server Hosting: blogs.msdn.microsoft.com/rohithrajan/2018/03/13/… Вот ссылка непосредственно на скачивание: aka. ms / dotnetcore-2-windowshosting
riverswb

3

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

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

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


2

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

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

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

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

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


2

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


2

Прокомментируйте следующие строки в файле 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>

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


2

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

Размещение просто как напоминание, если кто-то может иметь такую ​​же проблему.


2

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

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

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

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

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


1
Я только что переустановил Windows 10 методом обновления на месте, и либо снял флажки с некоторых из этих ящиков, либо переустановил их. Соответствующий код ошибки 0x80070021 появился на странице 500.19.
Эндрю Мортон

2

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

    <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.


1
Вы можете сохранить правила перезаписи в IIS, если установите модуль перезаписи URL IIS. Это на iis.net/downloads/microsoft/url-rewrite
Тоби Артисан

1

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

Решение состояло в том, чтобы перейти к основным настройкам> подключиться как> конкретный пользователь - и войти в систему как пользователь, а не по умолчанию «сквозной»

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


1

Windows 7

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

запустите cmd от имени администратора.

Unistall все это.

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

Переустанови иис и нормально работает

Alain


1

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


1

Как и в верхнем ответе , мы получили это невероятно бесполезное исключение из-за отсутствия модуля IIS CORS. Это была та же самая ошибка с кодом ошибки (0x8007000d) и источником конфигурации (-1: 0 :), но установка модуля перезаписи URL не устранила ее.

Недавно мы обновили web.config, чтобы включить CORS для некоторых разработчиков, которым это необходимо, но не ожидали, что всем разработчикам потребуется установить модуль IIS CORS. К сожалению, похоже, что это необходимо.

Чтобы это исправить, установите модуль IIS CORS отсюда .


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