Запрос.RawUrl против запроса.Url-адрес
в чем разница между Request.RawUrl
и Request.Url
in ASP.NET?
7 ответов:
от MSDN:
необработанный URL определяется как часть URL-адрес, следующий за доменом информация. В строке URL
http://www.contoso.com/articles/recent.aspx
, необработанный URL-адрес/articles/recent.aspx
.это означает, что вы можете использовать
наrawurl
и не нужно заботиться о том, через какой адрес был вызван сервер (напримерhttp://yourserver/
илиhttp://yourserver.yourdomain.com/
если у вас есть несколько интерфейсов.)URL
свойстваHTTPRequest
объект возвращает a
кажется, никто не упомянул, что он показывает необработанный URL, фактически полученный IIS, прежде чем какие-либо манипуляции могли произойти, отправив его вокруг IIS или вашей файловой системы с перезаписью URL, например.
скажем, вы установили страницу ошибки в /error в приложении MVC, и вы установили свой webconfig для замены страниц ошибок на пользовательскую страницу ошибок в этом месте. Таким образом, когда получаю сообщение об ошибке в /faultypage пользователь получит страницу на ошибки, но URL-адрес в строку Вашего браузера адресная строка все равно скажет www.mysite.com/faultypage - это перевод или переписывание.
теперь на вашем контроллере ошибок, если вы должны взглянуть на запрос.Url это будет что-то вроде "www.mysite.com/error - и просьба.RawUrl бы сказать (с большей пользой?) "/faultypage", который является фактическим запросом пользователя, а не страницей, которая в настоящее время выполняется.
вот простая ссылка на то, как получить различные части 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
Request.RawUrl
очень похоже наRequest.Url.PathAndQuery
кроме этоRequest.Url.PathAndQuery
включает в себя Документ По Умолчанию если один был использован в то время какRequest.RawUrl
нет. По моему опыту, это верно для ASP.Net 4.0 и выше.
запрос.RawUrl возвращает строку, это все после информации о домене для текущего url.
например, для: запрос.RawUrl против запроса.URL-адрес
запрос.RawUrl будет / questions / 2019735 / request-rawurl-vs-request-url
запрос.Url возвращает объект Uri,http://msdn.microsoft.com/en-us/library/system.uri_members.aspx
The HttpRequest.Документация RawUrl собственность описывает значение свойства как:
исходный URL-адрес определяется как часть URL после домена. В строке URL
http://www.contoso.com/articles/recent.aspx
, необработанный URL-адрес/articles/recent.aspx
. Необработанный URL-адрес включает строку запроса, если она присутствует.The HttpRequest.Url Property documentation описывает значение свойства как:
A Uri объект, который содержит URL-адрес текущего запроса.
посмотреть документация класса Uri свойства.