Перезапись URL в asp.net, но с сохранением исходного URL - PullRequest
7 голосов
/ 09 сентября 2010
Page aspxHandler = (Page)PageParser.GetCompiledPageInstance(virtualPath, context.Server.MapPath(virtualPath), context);

aspxHandler.PreRenderComplete += AspxPage_PreRenderComplete;
aspxHandler.ProcessRequest(context);

Когда после этого вы вызываете Page.Request.Url, вы получаете URL страницы, которую вы переписали на

... что я ищу, это сделать переписать, но дляPage.Request.Url, чтобы остаться в качестве исходного URL, который был передан. Это возможно?

1 Ответ

10 голосов
/ 01 ноября 2010

У меня была похожая проблема с использованием правил переписывания в файле web.config. Не уверен, что это решит и вашу проблему, но я обнаружил, что когда URL был переписан, первоначально запрошенный URL-адрес был доступен через серверную переменную HTTP_X_ORIGINAL_URL.

VB:

 string pathAndQuery = Request.ServerVariables.AllKeys.Contains("HTTP_X_ORIGINAL_URL") ? Request.ServerVariables("HTTP_X_ORIGINAL_URL") : Request.Url.PathAndQuery

C #:

 string pathAndQuery = Request.ServerVariables.AllKeys.Contains("HTTP_X_ORIGINAL_URL") ? Request.ServerVariables["HTTP_X_ORIGINAL_URL"] : Request.Url.PathAndQuery;

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

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