Подтвердить что ты не робот

Request.RawUrl vs. Request.Url

В чем разница между Request.RawUrl и Request.Url в ASP.NET?

4b9b3361

Ответ 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 для его свойств.

Ответ 7

Я согласен с BritishDeveloper, Это важное различие: Request.RawURL имеет исходное значение запроса (до перенаправления IIS URL-адреса) и вернуть строку (без домена) С другой стороны Request.Uri возвращает