Как получить оригинальный URL после вызова HttpContext.RewritePath () - PullRequest
14 голосов
/ 11 марта 2010

Я работаю над веб-приложением, в котором используется сторонний HttpModule, который выполняет перезапись URL.

Я хочу знать, есть ли способ определить исходный URL позже в Application_BeginRequest событии. Например ...

Оригинальный URL:
http://domain.com/products/cool-hat.aspx

Переписанный URL (из стороннего httpmodule):
http://domain.com/products.aspx?productId=123

В прошлом я писал HttpModules, которые хранят исходный URL в HttpContext.Items, но это стороннее приложение, и у меня нет способа сделать это.

Любые идеи будут оценены.

Ответы [ 4 ]

27 голосов
/ 21 мая 2011

Попробуйте это:

string originalUrl = HttpContext.Current.Request.RawUrl;

Исходный URL-адрес находится внутри этого свойства.

9 голосов
/ 21 сентября 2011

У меня была такая же проблема, но я хотел получить полный URL-адрес (RawUrl дает вам только часть Path и Query). Итак, опираясь на ответ Джоша:

string originalUrlFull = 
   Page.Request.Url.GetLeftPart(System.UriPartial.Authority) + 
   Page.Request.RawUrl
6 голосов
/ 04 июня 2013

Я знаю, что этот вопрос задавали давно. Но вот что я использую:

System.Uri originalUri = new System.Uri(Page.Request.Url, Page.Request.RawUrl)

Получив URI, вы можете выполнить ToString (), чтобы получить строку, или вызвать любой из методов / свойств для получения частей.

1 голос
/ 11 марта 2010

Создайте новый HttpModule, который будет служить оберткой (наследует) сторонний модуль и делать с ним все, что вы захотите.

В вашем случае переопределите соответствующую функцию (ProcessRequest?) И сохраните исходный URL в HttpContext.Items, а затем вызовите реализацию MyBase. Должно работать нормально.

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