Asp.net 调用HttpContext.RewritePath()后如何获取原始url
我正在开发一个web应用程序,它使用第三方HttpModule执行url重写 我想知道以后在Asp.net 调用HttpContext.RewritePath()后如何获取原始url,asp.net,url-rewriting,httpmodule,Asp.net,Url Rewriting,Httpmodule,我正在开发一个web应用程序,它使用第三方HttpModule执行url重写 我想知道以后在Application\u BeginRequest事件中是否有办法确定原始url。例如 原始url: http://domain.com/products/cool-hat.aspx 重新写入的url(来自第三方httpmodule): http://domain.com/products.aspx?productId=123 在过去,我编写了HttpModules,在HttpContext.Items
Application\u BeginRequest
事件中是否有办法确定原始url。例如
原始url:http://domain.com/products/cool-hat.aspx
重新写入的url(来自第三方httpmodule):http://domain.com/products.aspx?productId=123
在过去,我编写了HttpModules,在HttpContext.Items中存储原始url,但是,这是一个第三方应用程序,我没有办法做到这一点
如果您有任何想法,我们将不胜感激。创建一个新的HttpModule,作为第三方模块的包装(继承)并使用它做任何您想做的事情 在您的情况下,重写适当的函数(ProcessRequest?)并将原始url存储在HttpContext.Items中,然后调用
MyBase
实现。应该可以。试试这个:
string originalUrl = HttpContext.Current.Request.RawUrl;
原始URL位于该属性内。我也有同样的问题,但我想要完全限定的URL(RawUrl只提供路径和查询部分)。因此,根据Josh的回答:
string originalUrlFull =
Page.Request.Url.GetLeftPart(System.UriPartial.Authority) +
Page.Request.RawUrl
我知道这个问题很久以前就被问过了。但是,我用的是:
System.Uri originalUri = new System.Uri(Page.Request.Url, Page.Request.RawUrl)
一旦您有了URI,您就可以执行ToString()来获取字符串,或者调用任何方法/属性来获取部分。为什么要这么麻烦?只需使用请求的RawUrl属性。比所有这些模块故障简单得多。模块也有它的开销。。。