740 votes

Comment obtenir l'URL de la page courante en C#

Quelqu'un peut-il m'aider à obtenir l'URL de la page de travail actuelle de ASP.NET en C# ?

994voto

Canavar Points 29161

Essayez ceci :

string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx

string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx

string host = HttpContext.Current.Request.Url.Host;
// localhost

562voto

KnowledgeSeeker Points 2546

Vous pouvez parfois avoir besoin d'obtenir des valeurs différentes de l'URL.

L'exemple ci-dessous montre différentes manières d'extraire différentes parties de l'URL.

EXEMPLE (Exemple d'URL)

http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QuerrString2=2

CODE

Response.Write("<br/> " + HttpContext.Current.Request.Url.Host);
Response.Write("<br/> " + HttpContext.Current.Request.Url.Authority);
Response.Write("<br/> " + HttpContext.Current.Request.Url.AbsolutePath);
Response.Write("<br/> " + HttpContext.Current.Request.ApplicationPath);
Response.Write("<br/> " + HttpContext.Current.Request.Url.AbsoluteUri);
Response.Write("<br/> " + HttpContext.Current.Request.Url.PathAndQuery);

SORTIE

localhost
localhost:60527
/WebSite1test/Default2.aspx
/WebSite1test
http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QuerrString2=2
/WebSite1test/Default2.aspx?QueryString1=1&QuerrString2=2 

Vous pouvez copier-coller l'exemple de code ci-dessus et l'exécuter dans une application asp.net web form avec une URL différente.

Je vous recommande également de lire ASP.Net Routing. Si vous utilisez ASP Routing, vous n'avez pas besoin d'utiliser une URL traditionnelle avec une chaîne de requête.

http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx

115voto

Soenhay Points 1455

Je partage simplement cette information, car c'est la solution que j'ai trouvée grâce à l'article de Canavar.

Si vous avez quelque chose comme ça :

"http://localhost:1234/Default.aspx?un=asdf&somethingelse=fdsa"

ou comme ça :

"https://www.something.com/index.html?a=123&b=4567"

et que vous ne voulez que la partie qu'un utilisateur pourrait taper, alors cela fonctionnera :

String strPathAndQuery = HttpContext.Current.Request.Url.PathAndQuery;
String strUrl = HttpContext.Current.Request.Url.AbsoluteUri.Replace(strPathAndQuery, "/");

qui se traduirait par ces derniers :

"http://localhost:1234/"
"https://www.something.com/"

51voto

roman m Points 9998

si vous voulez juste la partie entre http:// et le premier slash

string url = Request.Url.Host;

renverrait stackoverflow.com s'il était appelé depuis cette page

Voici le dégradation complète

15voto

Nadjib Points 186

Si vous voulez obtenir

localhost:2806 

de

http://localhost:2806/Pages/ 

alors utilisez :

HttpContext.Current.Request.Url.Authority

Prograide.com

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.

Powered by:

X