ASP.NET中Request.RawUrl
和Request.Url
之间的区别是什么?
答案 0 :(得分:58)
似乎没有人提到它显示了IIS实际收到的原始URL,之后可能发生了任何操作,例如在IIS或您的文件系统中进行URL重写。
假设您已在MVC应用中的/error
处设置了错误页面,并将webconfig设置为将错误页面替换为该位置的自定义错误页面。这样,当/faultypage
收到错误时,用户会在/error
获取该页面,但浏览器地址栏中的网址仍然会显示www.mysite.com/faultypage
- 这是转移,或者是重写。
现在在你的错误控制器上,如果你要查看Request.Url
,它会是www.mysite.com/error
和Request.RawUrl
会说的(更有用吗?)/faultypage
这是用户的实际请求,而不是当前正在执行的页面。
答案 1 :(得分:52)
来自MSDN:
原始网址被定义为 域后面的URL 信息。在URL字符串中
http://www.contoso.com/articles/recent.aspx
, 原始URL是/articles/recent.aspx
这意味着,您可以使用rawurl
而不必关心调用服务器的地址(例如http://yourserver/
或http://yourserver.yourdomain.com/
,如果您有多个接口。)< / p>
但是,URL
对象的HTTPRequest
属性返回一个System.URI
对象,该对象还包含服务器名称。
答案 2 :(得分:17)
Request.RawUrl
与Request.Url.PathAndQuery
非常相似,除了 Request.Url.PathAndQuery
包含Default Document如果使用Request.RawUrl
而{{1}}没有。根据我的经验,这适用于ASP.Net 4.0 and higher。
答案 3 :(得分:5)
HttpRequest.RawUrl Property documentation将属性值描述为:
原始URL定义为域信息后面的URL部分。在网址字符串
http://www.contoso.com/articles/recent.aspx
中,原始网址为/articles/recent.aspx
。原始URL包括查询字符串(如果存在)。
HttpRequest.Url Property documentation将属性值描述为:
包含当前请求的网址的Uri对象。
请参阅Uri class documentation了解其属性。
答案 4 :(得分:5)
Request.RawUrl返回一个字符串,它是当前网址的域信息之后的所有内容。
例如,对于:Request.RawUrl vs. Request.Url
Request.RawUrl将是/ questions / 2019735 / request-rawurl-vs-request-url
Request.Url返回一个Uri对象http://msdn.microsoft.com/en-us/library/system.uri_members.aspx