ASP.NET Как предотвратить прямой доступ к базовой веб-форме в приложении маршрутизации? - PullRequest
0 голосов
/ 06 октября 2010

Представьте себе приложение Web Forms с маршрутизацией.Чистое имя страницы, например:

http://www.mywebsite.com/home

Может иметь базовый URL:

http://www.mywebsite.com/page.aspx?id=3

Если пользователь вводит http://www.mywebsiter.com/page.aspx?id=3 в браузер, мне нужно перенаправить на http://www.mywebsite.com/home

Возможно ли это сделать?Я не могу найти способ сделать это, так как механизм маршрутизации не выполняется для физической страницы, и в методе page.aspx Page_Load у меня нет никакого способа узнать, был ли URL введен напрямую или был результатом маршрута.

Ответы [ 2 ]

1 голос
/ 06 октября 2010

Вы можете использовать коллекцию Page.RouteData.Values, чтобы определить, загружается ли страница из-за маршрутизации, а не по прямому URL. Это можно сделать в Page_Load ().

Если есть значения данных маршрута (вы, вероятно, проверите значения, которые, как вы знаете, должны существовать), тогда они в порядке. Если значения данных маршрута отсутствуют, страница загружена «напрямую», и вам следует перенаправить их.

0 голосов
/ 06 октября 2010

Ознакомьтесь с модулем перезаписи URL IIS .

Вы также можете посмотреть на такие вещи, как отключение маршрутизации для файлов (RouteTable.Routes.RouteExistingFiles = false;) - это может быть опасно!

...