Request.RawUrl与Request.Url

ker*_*bou 71 asp.net

Request.RawUrlRequest.UrlASP.NET 之间有什么区别?

Bri*_*per 58

似乎没有人提到它显示了IIS实际收到的Raw URL,然后才会发生任何操作,例如在IIS重写或文件系统中进行URL重写.

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

现在在你的错误控制器上,如果你要看看Request.Url,它会像"www.mysite.com/error"和Request.RawUrl会说(更有用吗?)"/ faultypage"这是用户的实际请求不是当前正在执行的页面.

  • 是啊.`Request.Url` (3认同)

nai*_*sts 52

来自MSDN:

原始URL定义为域信息后面的URL部分.在URL字符串中 http://www.contoso.com/articles/recent.aspx,原始URL是 /articles/recent.aspx.

这意味着,您可以使用rawurl而不必关心调用服务器的地址(例如http://yourserver/,http://yourserver.yourdomain.com/如果您有多个接口).

但是,对象的URL属性HTTPRequest返回一个System.URI对象,该对象还包含服务器名称.

  • 这种解释错误地暗示`Request.RawUrl`只是`Request.Url.LocalPath`的语法糖. (13认同)
  • @MalRoss:在路径重写期间,它们可以完全是不同的路径(例如,404处理程序).参见[英国开发人员的回答](http://stackoverflow.com/a/20381367/18192) (9认同)
  • @Brian可能有助于解释它不仅仅是语法糖. (3认同)

dan*_*ana 16

Request.RawUrl非常类似于Request.Url.PathAndQuery 除外的是Request.Url.PathAndQuery包括默认文档如果使用,而Request.RawUrl没有.根据我的经验,ASP.Net 4.0及更高版本也是如此.


rah*_*hul 5

HttpRequest.RawUrl属性文档描述了属性值:

原始URL定义为URL中域信息之后的一部分。在URL字符串中http://www.contoso.com/articles/recent.aspx,原始URL为/articles/recent.aspx。原始URL包含查询字符串(如果存在)。

HttpRequest.Url属性文档描述了属性值:

一个Uri对象,其中包含当前请求的URL。

有关其属性,请参见Uri类文档


Tow*_*own 5

Request.RawUrl返回一个字符串,它是当前网址的域信息之后的所有内容.

例如,for: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