Как я могу запретить IIS7 использовать HttpHandlers?
-
23-09-2019 - |
Вопрос
Я немного поигрался с IIS7, просто пытаюсь перехватить события вручную в global.asax и полностью пропустить конвейер ASP httphandler.Для этого я установил
<httpHandlers>
<clear/>
</httpHandlers>
<httpModules>
<clear/>
</httpModules>
но когда я звоню на сервер, я получаю YSOD
[HttpException]: No http handler was found for request type 'GET'
at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Что мне нужно сделать, чтобы полностью запретить IIS обрабатывать вещи с помощью обычного конвейера?Я хочу просто выполнять Response.Writes в обработчиках событий и асинхронных методах, настроенных в HttpApplication.Init.
редактировать:Мой вопрос был очевиден.немного неясно (извините всех, чье время было потрачено впустую) - мне следовало объяснить лучше, поскольку то, что я пытаюсь сделать, довольно нетрадиционно.Я пытаюсь посмотреть, смогу ли я использовать IIS для обработки веб-запросов аналогично node.js - путем подключения обработчиков к асинхронным методам в HttpApplication.Для этого мне нужно, чтобы ASP перестал выдавать шаткие сообщения, потому что я не хочу использовать HttpHandlers.В настоящее время мне лучше всего использовать NullHttpHandler для всех запросов, но мне интересно, смогу ли я полностью отключить систему HttpHandler.Ваши идеи!
Решение
Вам нужен IIS.Запрос начинается в конвейере IIS, и чтобы ASP .NET мог его обработать, IIS должен иметь возможность найти обработчик http, которому он сможет передать запрос.Он передает запрос в ASP .NET только после того, как найдет подходящий обработчик.
Другие советы
Вам необходимо повторно добавить StaticFileHandler:
<httpHandlers>
<clear />
<add verb="*" path="*.jpg" type="System.Web.StaticFileHandler" />
</httpHandlers>
Я знаю, что он немного старый...но если вы в своем ie. BeginRequest
событие HttpApplication
назначить обработчик HttpContext.Current.Handler
вы не должны получать эту ошибку и можете оставить раздел обработчиков в web.config пустым.