Request.RawUrl и Request.Url - PullRequest
       20

Request.RawUrl и Request.Url

69 голосов
/ 07 января 2010

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

Ответы [ 5 ]

58 голосов
/ 04 декабря 2013

Никто, по-видимому, не упомянул, что он показывает необработанный URL-адрес, фактически полученный IIS, до того, как могли произойти какие-либо манипуляции с его отправкой по IIS или вашей файловой системе, например с перезаписью URL.

Скажем, вы установили страницу ошибки на /error в приложении MVC и настроили свой webconfig на замену страниц ошибок своей пользовательской страницей ошибок в этом месте. Таким образом, при получении ошибки на /faultypage пользователь получит страницу на /error, но URL-адрес в адресной строке вашего браузера будет по-прежнему сообщать www.mysite.com/faultypage - это передача или перезапись.

Теперь на вашем контроллере ошибок, если вы посмотрите на Request.Url, это будет что-то вроде www.mysite.com/error, и Request.RawUrl скажет (более полезно?) /faultypage, что является фактическим запросом пользователя, а не страница, которая в данный момент выполняется.

52 голосов
/ 07 января 2010

Из 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, который также содержит имя сервера.

17 голосов
/ 04 мая 2013

Request.RawUrl очень похоже на Request.Url.PathAndQuery , за исключением , что Request.Url.PathAndQuery включает Документ по умолчанию , если он использовался, тогда как Request.RawUrl - нет. По моему опыту, это верно для ASP.Net 4.0 и выше .

5 голосов
/ 07 января 2010

Request.RawUrl возвращает строку, это все после информации о домене для текущего URL.

Например, для: Request.RawUrl и 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

5 голосов
/ 07 января 2010

Документация по HttpRequest.RawUrl описывает значение свойства как:

Необработанный URL-адрес определяется как часть URL-адреса, следующего за информацией о домене. В строке URL-адреса http://www.contoso.com/articles/recent.aspx необработанный URL-адрес /articles/recent.aspx. Необработанный URL-адрес включает строку запроса, если имеется.

Документация HttpRequest.Url свойства описывает значение свойства как:

A Uri объект, который содержит URL текущего запроса.

Сведения о его свойствах см. В документации Uri .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...