В чем разница между Request.RawUrl
и Request.Url
в ASP.NET?
Request.RawUrl vs. Request.Url
Ответ 1
Из 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
, который также содержит имя сервера.
Ответ 2
Похоже, никто не упомянул, что он показывает необработанный URL-адрес, фактически полученный IIS, до того, как могли произойти какие-либо манипуляции, например, пересылка его вокруг IIS или вашей файловой системы с перезаписью URL-адреса.
Скажем, вы установили страницу ошибок в /error
MVC-приложении в приложении MVC и настроили свой webconfig для замены страниц ошибок на свою страницу ошибок в этом месте. Таким образом, когда возникает ошибку в /faultypage
, пользователь получит страницу в /error
, но URL - адрес в адресной строке своего браузера по- прежнему будет сказать www.mysite.com/faultypage
-это это передача или переписан.
Теперь на контроллере ошибок, если вы хотите взглянуть на Request.Url
, это будет что - то вроде www.mysite.com/error
и Request.RawUrl
бы сказать ( с большей пользой?) /faultypage
который пользователь фактический запрос не страница, которая в данный момент выполняется.
Ответ 3
Вот простая ссылка, как получить разные части URL-адреса на С#.
URL used for this example:
http://localhost:12345/site/page.aspx?q1=1&q2=2
Value of HttpContext.Current.Request.Url.Host
localhost
Value of HttpContext.Current.Request.Url.Authority
localhost:12345
Value of HttpContext.Current.Request.Url.AbsolutePath
/site/page.aspx
Value of HttpContext.Current.Request.ApplicationPath
/site
Value of HttpContext.Current.Request.Url.AbsoluteUri
http://localhost:12345/site/page.aspx?q1=1&q2=2
Value of HttpContext.Current.Request.RawUrl
/site/page.aspx?q1=1&q2=2
Value of HttpContext.Current.Request.Url.PathAndQuery
/site/page.aspx?q1=1&q2=2
Ответ 4
Request.RawUrl
очень похож на Request.Url.PathAndQuery
, за исключением того, что Request.Url.PathAndQuery
включает Документ по умолчанию, если он использовался, тогда как Request.RawUrl
не. По моему опыту, это справедливо для ASP.Net 4.0 и выше.
Ответ 5
Документация по свойству HttpRequest.RawUrl описывает значение свойства следующим образом:
Необработанный URL-адрес определяется как часть URL-адреса, следующего за информацией о домене. В строке URL-адреса
http://www.contoso.com/articles/recent.aspx
необработанным URL-адресом является/articles/recent.aspx
. Необработанный URL-адрес включает строку запроса, если имеется.
Документация по свойству HttpRequest.Url описывает значение свойства следующим образом:
Объект Uri, содержащий URL-адрес текущего запроса.
См. Документацию класса Uri для его свойств.
Ответ 6
Request.RawUrl возвращает строку, это все после информации о домене для текущего URL.
Например, для: 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
Ответ 7
Я согласен с BritishDeveloper, Это важное различие: Request.RawURL имеет исходное значение запроса (до перенаправления IIS URL-адреса) и вернуть строку (без домена) С другой стороны Request.Uri возвращает