В чем разница между Request.RawUrl
и Request.Url
в ASP.NET?Request.RawUrl vs. Request.Url
ответ
Из 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
, который также содержит имя сервера.
Read HttpRequest.RawUrl Property
Исходный URL-адрес определяется как часть URL-адрес следующей информации домена . В строке URL http://www.contoso.com/articles/recent.aspx, необработанным URL-адресом является /articles/recent.aspx. Необработанный URL-адрес содержит строку запроса, , если присутствует.
Объект Uri, содержащий информацию относительно URL текущего запроса.
Request.RawUrl возвращает строку, это все после информации о домене для текущего URL-адреса.
Например, для: Request.RawUrl vs. Request.Url
Request.RawUrl бы/вопросы/2019735/запроса rawurl-против-запрос-URL
Request.Url возвращает объект Uri, http://msdn.microsoft.com/en-us/library/system.uri_members.aspx
Request.RawUrl
очень похож на Request.Url.PathAndQuery
за исключением, что Request.Url.PathAndQuery
содержит Default Document, если использовался, тогда как Request.RawUrl
- нет. По моему опыту, это верно для ASP.Net 4.0 and higher.
Никто, кажется, не упомянул, что он показывает URL-адрес Raw, фактически полученный IIS, до того, как могут произойти какие-либо манипуляции, например, с отправкой его вокруг IIS или вашей файловой системы с перезаписи URL.
Скажите, что вы установили страницу с ошибкой в / error в приложении MVC, и вы установили, что ваш webconfig заменяет страницы с ошибками на странице пользовательских ошибок в этом месте. Таким образом, при получении ошибки при/faultypage пользователь получит страницу с ошибкой, но URL-адрес в адресной строке вашего браузера все равно скажет www.mysite.com/faultypage - это передача или переписывание.
Теперь на вашем контроллере ошибок, если вы хотите заглянуть в Request.Url, это будет что-то вроде «www.mysite.com/error» и Request.RawUrl скажет (более полезно?) «/ Faultypage», который это фактический запрос пользователя, а не страница, которая в настоящее время выполняется.
Есть ли способ получить URL-адрес после манипуляций? –
Да. 'Request.Url' – BritishDeveloper
Вот простая ссылка, как получить разные части URL-адреса на C#.
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
Я согласен ж BritishDeveloper, это важное различие: Request.RawURL имеет исходное значение requet (до того, как IIS перенаправление URL) и возвращает строку (без домена) В другой стороны, запрос .Uri return
- 1. Request.URL удваивает параметры строки запроса?
- 2. Mocking Request.Url
- 3. Response.Write после response.redirect (Request.RawUrl)
- 4. Почему Request.Url включает в себя запрос?
- 5. express.js request.url всегда/
- 6. NodeJS request.url всегда «/»
- 7. Rails: request.referrer == request.url
- 8. request.url Экспресс и узел
- 9. Request.Url, когда в iFrame?
- 10. Request.Url возвращение локальный без домена
- 11. поддерживать позицию прокрутки при использовании Response.Redirect (Request.RawUrl)
- 12. Почему request.rawurl не включает http: // localhost part?
- 13. Как я могу изменить свойство Request.RawUrl?
- 14. Доступ к Request.Url при инициализации контроллера
- 15. Использование/Mocking Request.Url при использовании MvcContrib TestHelper
- 16. Request.Url имеет неверную информацию о порту
- 17. Как проверить, соответствует ли request.url определенное значение
- 18. FormsAuthentication.SetAuthCookie и Request.url failing in Unit test
- 19. ASP.NET Request.Url повторяет URL-адрес 3 раза
- 20. request.url не дает полный url в nodejs
- 21. Rails использовать request.url в почтовой программе
- 22. Путь сборки из nodejs request.url путь
- 23. Визит Request.Url при использовании Ajax в MVC
- 24. Возможно ли обход каталога через request.url?
- 25. Неопределенный метод разделения при использовании request.url
- 26. Некорректное порт в Request.URL с Azure Compute эмулятор
- 27. Заменить строку с другим в request.rawurl не работает
- 28. Эта веб-страница имеет цикл переадресации при выполнении Response.Redirect (Request.RawUrl)
- 29. Возможная ошибка/проблема в ASP.NET 3.5, связанные с Request.RawUrl собственности
- 30. ASP.Net MVC Cookieless Session - SessionID отсутствует из Request.Url
Это объяснение неверно означает, что 'Request.RawUrl' является просто синтаксическим сахаром для' Request.Url.LocalPath'. – Brian
@Brian может быть полезно объяснить, как это не просто синтаксический сахар. –
@MalRoss: они могут быть разными путями полностью во время перезаписи пути (например, 404 обработчиков). См. [Ответ британского разработчика] (http://stackoverflow.com/a/20381367/18192) – Brian