Маршрутизация страниц в asp.net 4.0 (URL-адрес без расширения) в сравнении с PageHandlerFactory (*.aspx)

Объясните мне, пожалуйста, чем эти две техники отличаются. Исходя из моего опыта, описанного ниже и этой статьи, я предполагаю, что при применении маршрутизации PageHandlerFactory не вызывается.

У меня есть свой собственный класс, полученный из PageHandlerFactory это должно вызываться всякий раз, когда пользователь получает доступ к странице.

Когда я не получаю доступ к страницам через маршруты, с этой строкой кода в web.config все нормально

<httpHandlers>
      <add verb="*" path="*.aspx" type="MyProject.Web.DependencyInjectionPageHandlerFactory, MyProject.Web" />
    </httpHandlers>

Но когда я получаю доступ к странице по маршруту, например,

RouteTable.Routes.MapPageRoute("Login", "login", "~/Pages/Login.aspx");

обработчик не применяется. Я даже протестировал это, поместив точку останова в конструктор моего обработчика, и он не вызывался, когда я обращался к странице по маршруту. Поскольку я использую IoC/DI в своем проекте, я хотел бы продолжать использовать его для добавления DI в мои страницы aspx, даже если я использую маршрутизацию.

Как бы я справился с этим в web.config? Или, по крайней мере, в коде.


РЕДАКТИРОВАТЬ: я узнал, что есть событие, возникающее при каждой загрузке страницы, независимо от того, как. В Global.asax это

Application_PostRequestHandlerExecute

Теперь я легко могу понять, как он вызывается при разборе URL. Есть ли способ, как применить мой PageHandlerFactory на некоторых страницах?

0 ответов

Другие вопросы по тегам