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

Это сводит всю команду с ума. Должна быть какая-то простая неправильно настроенная часть 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> I ЕЩЕ ПОЛУЧАЕТ ошибку. Я буквально должен удалить <httpHandlers> (и строки между ними), чтобы прекратить получать вышеуказанную ошибку.

Как только я это сделаю, я получаю ошибку new 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

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

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

Ответы [ 19 ]

250 голосов
/ 04 августа 2010

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

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

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

40 голосов
/ 22 сентября 2011

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

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

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

40 голосов
/ 27 ноября 2009

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

Вот и все!

12 голосов
/ 10 сентября 2013

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

12 голосов
/ 21 декабря 2016

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

8 голосов
/ 16 ноября 2010

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

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

4 голосов
/ 20 мая 2017

Еще один способ получить ошибку в 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 отсутствуют - и это нормально, потому что они вам не нужны - у вас есть ** application 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, поэтому будьте осторожны с этой кнопкой, если у вас есть какие-либо пользовательские настройки.

4 голосов
/ 27 августа 2015

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

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

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

aspnet_regiis.exe -i
3 голосов
/ 19 июля 2018

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

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

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

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

...