Я установил DotNetOpenAuth SDK-3.4.5.10201.vsix и не могу заставить его работать. Он работает локально (когда я запускаю как localhost), но когда я пытаюсь опубликовать его, он не работает.
Я получаю сообщение об ошибке IIS
Сводка ошибки
HTTP Error 500.22 - Внутренняя ошибка сервера
Обнаружен параметр ASP.NET, который не применяется в режиме интегрированного управляемого конвейера.
А ТАКЖЕ
Module ConfigurationValidationModule Notification BeginRequest Handler StaticFile Error Code 0x80070032
тогда есть несколько советов о том, как решить проблему:
Вещи, которые вы можете попробовать:
Перенесите конфигурацию в
system.webServer/modules
раздел. Вы можете сделать это вручную или с помощью Appcmd из командной строки - например,%SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/"
. ИспользованиеAppCmd
для переноса вашего приложения позволит ему работать в интегрированном режиме и продолжать работать в классическом режиме и в предыдущих версиях IIS.Если вы уверены, что игнорировать эту ошибку можно, ее можно отключить, установив
system.webServer/validation@validateIntegratedModeConfiguration
значение false.Либо переключите приложение в пул приложений в классическом режиме, например
%SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"
,. Делайте это только в том случае, если вы не можете перенести приложение.
(Установите «Веб-сайт по умолчанию» и «Классический .NET AppPool» для вашего пути к приложению и имени пула приложений)
Но проблема в том, что у меня нет доступа к серверу МКС, поскольку я не являюсь его владельцем. Есть ли способ решить это?
true
том, что вы можете оставить свои тренировочные колеса и заставить IIS кричать на вас всякий раз, когда вы добавляете параметр, который не будет работать в интегрированном режиме. Это для неопытных, но мешает.Добавление
<validation validateIntegratedModeConfiguration="false"/>
адресует симптом, но не подходит для всех обстоятельств. Обойдя эту проблему несколько раз, я надеюсь помочь другим не только преодолеть проблему, но и понять ее. (Что становится все более и более важным, поскольку IIS 6 превращается в миф и слух.)Фон:
Эта проблема и путаница вокруг нее началась с введения ASP.NET 2.0 и IIS 7. В IIS 6 был и остается только один конвейерный режим, и он эквивалентен тому, что IIS 7+ называет «классическим» режимом. Второй, более новый и рекомендуемый режим конвейера для всех приложений, работающих на IIS 7+, называется «Интегрированным» режимом.
Так в чем же разница? Основное различие заключается в том, как ASP.NET взаимодействует с IIS.
Классический режимограничен конвейером ASP.NET, который не может взаимодействовать с конвейером IIS. По сути, приходит запрос, и если IIS 6 / Classic через конфигурацию сервера сообщили, что ASP.NET может обработать его, то IIS передает запрос в ASP.NET и продолжает работу. Значение этого можно почерпнуть из примера. Если бы я разрешил доступ к статическим файлам изображений, я бы не смог сделать это с модулем ASP.NET, потому что конвейер IIS 6 будет обрабатывать эти запросы сам, а ASP.NET никогда не увидит эти запросы, потому что они никогда не передавались. . * С другой стороны, авторизация того, какие пользователи могут получить доступ к странице .ASPX, такой как запрос на Foo.aspx, тривиальна даже в IIS 6 / Classic, поскольку IIS всегда передает эти запросы конвейеру ASP.NET. В классическом режиме ASP.NET не знает, что он имеет
Рекомендуется интегрированный режим, поскольку обработчики и модули ASP.NET могут напрямую взаимодействовать с конвейером IIS. Теперь конвейер IIS просто не передает запрос в конвейер ASP.NET, теперь он позволяет коду ASP.NET напрямую подключаться к конвейеру IIS и всем запросам, которые к нему попадают. Это означает, что модуль ASP.NET может не только наблюдать запросы к статическим файлам изображений, но и перехватывать эти запросы и предпринимать действия, отказывая в доступе, регистрируя запрос и т. Д.
Преодоление ошибки:
С другой стороны, может быть, вы даете своему приложению подтяжку лица или оно работает очень хорошо, пока вы не установили стороннюю библиотеку через NuGet, вручную или каким-либо другим способом. В этом случае это вполне возможно
httpHandlers
илиhttpModules
было добавленоsystem.web
. Результатом является ошибка, которую вы видите, потому что поvalidateIntegratedModeConfiguration
умолчаниюtrue
. Теперь у вас есть два варианта:httpHandlers
иhttpModules
элементы изsystem.web
. Есть несколько возможных результатов от этого:httpHandlers
иhttpModules
что пакеты NuGet продолжают добавлятьsystem.web
, делайте, что вам нужно.validateIntegratedModeConfiguration
наfalse
, но , по крайней мере , вы знаете , что вы делаете и почему это важно.Хорошо читает:
* Конечно, есть способы получить все виды странных вещей в конвейер ASP.NET из IIS 6 / Classic с помощью заклинаний, таких как сопоставления с подстановочными знаками , если вам нравятся такие вещи.
источник
Если вам все еще нужно использовать модуль HTTP, вам нужно настроить его (.NET 4.0 framework) следующим образом:
источник
Я столкнулся с этой проблемой, но у меня было другое решение. Это включало обновление
Control Panel>Administrative Tools>IIS Manager
и возврат Managed Pipeline сайта моего приложения изIntegrated
вClassic
.источник
Application Pools
в дерево слева, дважды щелкните пул, который вы хотите изменить, и выберите режим конвейера.Проверьте, есть ли конфликт в вашей аутентификации IIS. т.е. вы включаете анонимную аутентификацию и олицетворение ASP.NET, оба могут также вызвать ошибку.
источник
В вашем web.config убедитесь, что эти ключи существуют:
А также проверьте Asp.Net Impresonation = Отключить в аутентификации сайта IIS
источник
Я столкнулся с этой проблемой и, вдохновленный ответом @Jeremy Cook, прикусила пулю, чтобы выяснить, что, черт возьми, заставило интегрированный режим IIS 7 не нравиться моему web.config. Вот мой сценарий:
Я хотел использовать маршрутизацию атрибутов в проекте, который (к сожалению) должен был использовать .NET 4 и, следовательно, не мог использовать Web API 2.2 (для которого требуется .NET 4.5). Пакет NuGet с хорошим смыслом добавил этот раздел в
<system.web>
разделе:[Я говорю правильно, потому что эта часть требуется для более старых версий IIS]
Удаление этого раздела привело меня к HTTP 500.23 !!
Резюме: я повторяю слова Джереми о том, что важно понять, почему вещи не работают, а не просто «маскировать симптом». Даже если вам нужно замаскировать симптом, вы знаете, что делаете (и почему) :-)
источник
Это сработало для меня:
Похоже, что-то пошло на юг, когда я изначально создал сайт. Я ненавижу решения, похожие на «Перезагрузите компьютер, затем переустановите Windows», не зная, что вызвало ошибку. Но это сработало для меня. Быстро и просто. Надеюсь, это поможет кому-то еще.
источник
В моем случае мне не хватало dll в папке bin, на которую ссылался файл web.config. Так что проверьте, использовали ли вы какие-либо настройки в web.config, но на самом деле у вас нет dll.
Спасибо
источник
Мне потребовалось несколько часов, чтобы решить эту проблему, потому что все настройки, которые я нашел здесь об этой ошибке, были такими же, но все равно не работали. Проблема заключалась в том, что в моем веб-сервисе была папка, из которой файл нужно было отправить на устройство WinCE, после преобразования этой папки в приложение с Classic.NetAppPool оно начало работать.
источник
Ниже шаг решил мою проблему:
Откройте
CMD
запрос с правами администратора.Запустить :
iisreset.
Надеюсь это поможет.
источник
Метод для локальной ошибки
источник