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

Pau*_*aul 7 asp.net url-rewriting

Page aspxHandler = (Page)PageParser.GetCompiledPageInstance(virtualPath, context.Server.MapPath(virtualPath), context);

aspxHandler.PreRenderComplete += AspxPage_PreRenderComplete;
aspxHandler.ProcessRequest(context);
Run Code Online (Sandbox Code Playgroud)

在此之后调用Page.Request.Url时,您将获得重写为的页面的Url

...我正在寻找的是重写,但是Page.Request.Url仍然是传入的原始网址.这可能吗?

小智 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
Run Code Online (Sandbox Code Playgroud)

C#:

 string pathAndQuery = Request.ServerVariables.AllKeys.Contains("HTTP_X_ORIGINAL_URL") ? Request.ServerVariables["HTTP_X_ORIGINAL_URL"] : Request.Url.PathAndQuery;
Run Code Online (Sandbox Code Playgroud)

无论是否重写,这应该会在重写之前为您提供请求的原始路径和查询字符串.