Нет ли способа обнаружить перенаправленный URL в ASP.NET? - PullRequest
4 голосов
/ 16 февраля 2011

Нет ли способа определить, отображается ли текущий запрос с помощью маршрутизации URL-адресов ASP.NET 4.0?

У меня есть модуль HTTP, который обрабатывает событие приложения BeginRequest.Я обнаружил, что этот обработчик вызывается для всех типов файлов, включая CSS, JS, файлы изображений и т. Д., И я просто хочу выполнить действие, если целевой файл является страницей ASPX.

В случаедля перенаправленных страниц все свойства объекта HttpRequest отражают запрошенный URL-адрес, а не страницу ASPX, на которую отображается запрос.Как я могу определить, будет ли запрос обрабатываться файлом ASPX?

Спасибо за любые предложения.

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Внутри события Begin Request обработчик не был определен для конкретного URL.

Таким образом, нет способа определить, что в действительности будет обрабатывать этот URL, поскольку IIS еще не решил.Это происходит после того, как Begin Request был запущен, поэтому вызываются все типы файлов.

Это одна из причин, почему Begin Request не является хорошим событием для реального выполнения кода, для которого необходимо специально нацелиться на .NETфайлы.Хорошее использование метода Begin Request - добавление файлов cookie или заголовков в запрос или ответ.С ними можно справиться без проблем, независимо от того, что в итоге обрабатывает запрос.

Как упоминалось ранее, я бы предложил базовый класс, который наследуется от System.Web.UI.Page, от которого наследуются все другие ваши страницы,или создайте главную страницу.

Теперь, не зная точно, что вы пытаетесь сделать, трудно найти хорошее решение.Может быть возможно протестировать URL-адрес, чтобы проверить, будет ли он запущен маршрутом, но я не знаю как, и это также кажется чрезмерным, когда вы можете обрабатывать его через базовый класс или главную страницу.

1 голос
/ 16 февраля 2011

Вы можете создать BasePage в качестве базового класса для всех страниц в приложении и обрабатывать там событие Page_Load вместо использования модуля HTTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...