tag - how to write summary c#




Обнаружен параметр ASP.NET, который не применяется в режиме интегрированного управляемого конвейера (8)

2- й вариант - тот, который вы хотите.

В вашем web.config убедитесь, что эти ключи существуют:

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

Я установил DotNetOpenAuth SDK-3.4.5.10201.vsix, и я не могу заставить его работать. Он работает локально (когда я запускаю как localhost), но когда я пытаюсь опубликовать его, он не работает.

Сообщение об ошибке IIS, которое я получаю, это

Сводка ошибок
Ошибка HTTP 500.22 - Внутренняя ошибка сервера
Обнаружен параметр ASP.NET, который не применяется в режиме интегрированного управляемого конвейера.

А ТАКЖЕ

Module       ConfigurationValidationModule  
Notification BeginRequest  
Handler      StaticFile  
Error Code   0x80070032  

то есть некоторые предложения о том, как решить проблему:

Что вы можете попробовать:

  • system.webServer/modules конфигурацию в system.webServer/modules . Вы можете сделать это вручную или с помощью AppCmd ​​из командной строки - например, %SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/" . Использование AppCmd для переноса приложения позволит ему работать в режиме Integrated и продолжать работать в классическом режиме и в предыдущих версиях IIS.

  • Если вы уверены, что это нормально игнорировать эту ошибку, ее можно отключить, установив для параметра system.webServer/[email protected] значение false.

  • В качестве альтернативы, переключите приложение в пул приложений в классическом режиме - например, %SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool" . Выполняйте это только в том случае, если вы не можете перенести приложение.
    (Установите «Веб-сайт по умолчанию» и «Классический .NET AppPool» в свой путь к программе и имя пула приложений)

Но проблема в том, что у меня нет доступа к серверу ISS, поскольку я не являюсь его владельцем. Есть ли способ решить это?


В вашем web.config убедитесь, что эти ключи существуют:

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

Как и проверка Asp.Net Impresonation = Disable In IIS Site Authetication


Добавление <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 не знает, что ему не было сказано, и многое из того, что IIS 6 / Classic может не сказать.

  • Рекомендуется использовать интегрированный режим, поскольку обработчики и модули ASP.NET могут напрямую взаимодействовать с конвейером IIS. Конвейер IIS больше не передает запрос на конвейер ASP.NET, теперь он позволяет коду ASP.NET напрямую подключаться к конвейеру IIS и всем запросам, которые его ударили. Это означает, что модуль ASP.NET может не только наблюдать запросы к файлам статического изображения, но и перехватывать эти запросы и принимать меры, отказывая в доступе, регистрируя запрос и т. Д.

Преодоление ошибки:

  1. Если вы используете старое приложение, которое было первоначально создано для IIS 6, возможно, вы перенесли его на новый сервер, нет ничего плохого в запуске пула приложений этого приложения в классическом режиме. Идите вперед, вам не нужно плохо себя чувствовать.
  2. Опять же, возможно, вы подаете свое приложение подтяжку лица, или оно прекрасно работает, пока вы не установили стороннюю библиотеку через NuGet вручную или каким-либо другим способом. В этом случае полностью возможно httpHandlers или httpModules которые были добавлены в system.web . Результатом является ошибка, которую вы видите, потому что validateIntegratedModeConfiguration умолчанию имеет значение true . Теперь у вас есть два варианта:

    1. Удалите элементы httpHandlers и httpModules из system.web . Есть несколько возможных результатов из этого:
      • Все работает нормально, общий результат;
      • Ваше приложение продолжает жаловаться, может быть файл web.config в родительской папке, которую вы наследуете, также рекомендуется очистить этот web.config;
      • Вы устали от удаления httpHandlers и httpModules которые пакеты NuGet продолжают добавлять в system.web , эй, что вам нужно.
  3. Если эти параметры не работают или больше проблем, чем это того стоит, я не буду говорить вам, что вы не можете установить validateIntegratedModeConfiguration в false , но, по крайней мере, вы знаете, что вы делаете, и почему это имеет значение.

Хорошо читает:

* Конечно, есть способы получить все странные вещи в конвейере ASP.NET из IIS 6 / Classic посредством заклинаний, таких как сопоставления подстановочных знаков , если вам нравится такая штука.


Если вам все еще нужно использовать HTTP-модуль, вам необходимо настроить его (платформа .NET 4.0) следующим образом:

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
       <add name="MyModule" type="[Namespace].[Class], [assembly]"/>
   </modules>
   <validation validateIntegratedModeConfiguration="false"/>
</system.webServer>

Мне потребовалось несколько часов, чтобы решить это, потому что все настройки, которые я нашел здесь об этой ошибке, были одинаковыми, но они все еще не работали. Проблема заключалась в том, что у меня была папка в моей веб-службе, с которой файл должен быть отправлен на устройство WinCE, после преобразования этой папки в приложение с помощью Classic.NetAppPool он начал работать.


Проверьте, нет ли конфликта в вашей аутентификации IIS. т.е. вы включаете анонимную аутентификацию и олицетворение ASP.NET, оба могут вызвать ошибку.


Я столкнулся с этой проблемой и был вдохновлен ответом @Jeremy Cook, я укусил пулю, чтобы узнать, что заставило IIS 7 Integrated mode не понравиться мой web.config. Вот мой сценарий:

  1. Web API (версия 4.0.030506.0, старая)
  2. .NET 4.0
  3. Маршрутизация атрибутов 3.5.6 для веб-API [предупреждение о спойлере: это был этот парень!]

Я хотел использовать маршрутизацию атрибутов в проекте, который (к сожалению) должен был использовать .NET 4 и, следовательно, не мог использовать Web API 2.2 (для которого требуется .NET 4.5). Нужный пакет NuGet добавил этот раздел в раздел <system.web> :

<system.web>
<httpHandlers>
      <add verb="*" path="routes.axd" type="AttributeRouting.Web.Logging.LogRoutesHandler, AttributeRouting.Web" />
    </httpHandlers>
</system.web>

[Я говорю хорошо, потому что эта часть требуется для более старых версий IIS]

Удаление этого раздела заставило меня пройти HTTP 500.23 !!

Резюме: Я повторяю слова Джереми о том, что важно понять, почему все не работает, а не просто «маскирует симптом». Даже если вам нужно замаскировать симптом, вы знаете, что делаете (и почему) :-)


Я столкнулся с этой проблемой, но имел другое решение. Это связано с обновлением Control Panel>Administrative Tools>IIS Manager и возвратом управляемой конвейерой моего приложения на сайте « Integrated в Classic .





iis-7.5