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仍然是传入的原始网址。这可能吗?
答案 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;
无论是否重写,都应该在重写之前获取请求的原始路径和查询字符串。