url在asp.net中重写但保留原始URL

时间:2010-09-09 16:06:00

标签: asp.net url-rewriting

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仍然是传入的原始网址。这可能吗?

1 个答案:

答案 0 :(得分:10)

我在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;

无论是否重写,都应该在重写之前获取请求的原始路径和查询字符串。