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

StackOverflow https://stackoverflow.com/questions/1808680

Вопрос

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

Решение 3

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

Вот и все!

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

aspnet_regiis.exe -i

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

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

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

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

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

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

Поскольку файлы web.config являются иерархическими, вы можете поместить туда главный файл web.config и установить там некоторые настройки root, и все сайты унаследуют его.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 Экспресс ожидает это пустые каталоги.Они могут быть пустыми, но они должны существовать.Если они не существуют - вы получите ошибку класса 500, сообщающую вам, что доступ к файлу "web.config" по этому пути недоступен.

Впервые я столкнулся с этой проблемой, когда очищал свой жесткий диск.Я обнаружил папку "документы \ веб-сайты", полную мусора, я узнал несколько проектов летней давности, над которыми я больше не работаю, все пустые, ни одного файла, поэтому я все это удалил.Неделю спустя - бац - я не могу запустить / отладить ни один из сайтов, над которыми работал в данный момент.Ошибка была 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, поэтому будьте осторожны с этой кнопкой, если у вас там есть какие-либо пользовательские настройки.

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

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

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

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

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

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

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

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

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

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

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

Это сработает.

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

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

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

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

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

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

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

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

Windows 7

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

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

Удалите все iis.

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

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

Ален

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

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

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

  • Откройте Всемирная Паутина выпадающий список "плюс"

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

enter image description here

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top