Request.RawUrl与Request.Url

时间:2010-01-07 11:04:50

标签: asp.net

ASP.NET中Request.RawUrlRequest.Url之间的区别是什么?

5 个答案:

答案 0 :(得分:58)

似乎没有人提到它显示了IIS实际收到的原始URL,之后可能发生了任何操作,例如在IIS或您的文件系统中进行URL重写。

假设您已在MVC应用中的/error处设置了错误页面,并将webconfig设置为将错误页面替换为该位置的自定义错误页面。这样,当/faultypage收到错误时,用户会在/error获取该页面,但浏览器地址栏中的网址仍然会显示www.mysite.com/faultypage - 这是转移,或者是重写。

现在在你的错误控制器上,如果你要查看Request.Url,它会是www.mysite.com/errorRequest.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.RawUrlRequest.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