Может ли пользовательский IHttpHandler вернуться к обработке запросов по умолчанию?

Я пишу собственный HttpHandler для обработки веб-запросов для веб-фреймворка, который я пишу, но пытаюсь найти способ программно «игнорировать» запрос, если не соответствует ни один маршрут URL. Под игнорированием я подразумеваю, что если ни один предопределенный маршрут не соответствует URL-адресу входящего запроса, то по умолчанию будет использоваться стандартная обработка запроса, которую вы получили бы, если бы вы использовали необработанное веб-приложение ASP.Net.

Единственный способ, который я могу найти до сих пор, - это удалить пользовательский обработчик http для определенного пути, например:

<location path="Test">
    <system.webServer>
        <handlers>
            <remove name="DefaultHandler"/>
        </handlers>
    </system.webServer>
</location> 

Я не очень доволен этим решением и хотел бы реализовать что-то вроде MVC IgnoreRoute("..."). Однако копаться в этом источнике - занятие неблагодарное, и я не понимаю, где он на самом деле это делает.

Поэтому в идеале я хотел бы знать, можно ли каким-то образом выйти из настраиваемого обработчика http и позволить приложению обрабатывать его по умолчанию или узнать, как это делает MVC.

У кого-нибудь есть идеи?

Спасибо.


person David    schedule 23.04.2014    source источник
comment
Обработчики HTTP предназначены не для этого - обработчики HTTP предназначены для очень специфических форматов URL, например, применяются к каждому файлу с заданным расширением (минификатор для всех *.js запросов, обработчик страницы для всех *.aspx запросов, автоматическое изменение размера для всех *.jpg Запросы...). Если вы хотите работать совместно с другими модулями HTTP, вы должны использовать модуль HTTP - они используются для таких вещей, как фильтрация, инициализация, маршрутизация и т. Д. Вы можете изменить выполняющийся обработчик HTTP, конечно, но нет обработчика по умолчанию для переключения к.   -  person Luaan    schedule 23.04.2014


Ответы (1)


Я не думаю, что это можно сделать в Httphandler.

Рассмотрите возможность использования HttpModule. Таким же образом работает маршрутизация MCV.

person Stefano Altieri    schedule 23.04.2014