Quelle est la différence entre Request.RawUrl
y Request.Url
dans ASP.NET ?
Cette explication implique à tort que Request.RawUrl
est juste un sucre syntaxique pour Request.Url.LocalPath
.
Quelle est la différence entre Request.RawUrl
y Request.Url
dans ASP.NET ?
Personne ne semble avoir mentionné qu'il montre l'URL brute effectivement reçue par IIS, avant toute manipulation qui aurait pu se produire en la faisant circuler dans IIS ou dans votre système de fichiers avec une réécriture d'URL par exemple.
Disons que vous avez défini une page d'erreur à /error
dans une application MVC et vous définissez votre webconfig pour remplacer les pages d'erreur par votre page d'erreur personnalisée à cet emplacement. De cette façon, lorsque vous obtenez une erreur à /faultypage
l'utilisateur obtiendra la page suivante /error
mais l'url dans la barre d'adresse de votre navigateur dira toujours www.mysite.com/faultypage
-c'est un transfert, ou une réécriture.
Maintenant, sur votre contrôleur d'erreur, si vous voulez jeter un coup d'oeil à Request.Url
il sera quelque chose comme www.mysite.com/error
y Request.RawUrl
dirait (plus utilement ?) /faultypage
qui est la demande réelle de l'utilisateur et non la page en cours d'exécution.
De MSDN :
L'URL brute est définie comme la partie de l'URL qui suit le domaine du domaine. Dans la chaîne de l'URL
http://www.contoso.com/articles/recent.aspx
, l'URL brut est/articles/recent.aspx
.
Cela signifie que vous pouvez utiliser rawurl
et ne doivent pas se préoccuper de savoir par quelle adresse le serveur a été appelé (par exemple http://yourserver/
o http://yourserver.yourdomain.com/
si vous avez plusieurs interfaces).
Toutefois, le URL
d'un HTTPRequest
renvoie un System.URI
qui contient également le nom du serveur.
Cette explication implique à tort que Request.RawUrl
est juste un sucre syntaxique pour Request.Url.LocalPath
.
@Brian il pourrait être utile d'expliquer comment ce n'est pas seulement du sucre syntaxique.
@MalRoss : Il peut s'agir de chemins entièrement différents pendant la réécriture du chemin (par exemple, les gestionnaires 404). Voir Réponse de British Developer
Request.RawUrl
est très similaire à Request.Url.PathAndQuery
sauf que Request.Url.PathAndQuery
comprend le Document par défaut s'il a été utilisé alors que Request.RawUrl
ne le fait pas. D'après mon expérience, cela est vrai pour ASP.Net 4.0 et supérieur .
El Documentation sur la propriété HttpRequest.RawUrl décrit la valeur de la propriété comme :
L'URL brute est définie comme la partie de l'URL qui suit les informations relatives au domaine. Dans la chaîne de l'URL
http://www.contoso.com/articles/recent.aspx
l'URL brut est/articles/recent.aspx
. L'URL brute comprend la chaîne de requête, si elle est présente.
El Documentation sur la propriété HttpRequest.Url décrit la valeur de la propriété comme :
A Uri qui contient l'URL de la demande en cours.
Voir le Documentation sur la classe Uri pour ses propriétés.
Request.RawUrl renvoie une chaîne, c'est tout ce qui se trouve après les informations du domaine pour l'url actuelle.
Eg, pour : Request.RawUrl vs. Request.Url
Request.RawUrl serait /questions/2019735/request-rawurl-vs-request-url
Request.Url renvoie un objet Uri, http://msdn.microsoft.com/en-us/library/system.uri_members.aspx
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.