web-dev-qa-db-fra.com

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

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

618
apekshabs

Essaye ça :

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
867
Canavar

Vous pouvez parfois avoir besoin d'obtenir des valeurs différentes à partir d'une URL.

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

EXEMPLE: (exemple d'URL)

http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString2=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.Port);
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
60527
/WebSite1test/Default2.aspx
/WebSite1test
http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString1=2
/WebSite1test/Default2.aspx?QueryString1=1&QueryString2=2

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

Je recommande également de lire ASP.Net Routing au cas où vous pourriez utiliser ASP Routing, vous n'avez donc pas besoin d'utiliser l'URL traditionnelle avec une chaîne de requête.

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

455
Learning

Juste partager car c'était ma solution grâce au post de Canavar.

Si vous avez quelque chose comme ça:

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

ou comme ceci:

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

et vous ne voulez que la partie qu'un utilisateur taperait alors cela fonctionnera:

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

qui se traduiraient par:

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

si vous voulez juste la partie entre http: // et la première barre oblique

string url = Request.Url.Host;

retournerait stackoverflow.com si appelé depuis cette page

Voici le décompte complet

47
roman m

le request.rawurl donnera le contenu de la page en cours, il donne le chemin exact que vous avez demandé

utiliser HttpContext.Current.Request.RawUrl

21
Randhi Rupesh

Si vous voulez obtenir

localhost:2806 

de

http://localhost:2806/Pages/ 

puis utilisez:

HttpContext.Current.Request.Url.Authority
14
Thomas

un conseil pour les personnes qui ont besoin du chemin/url du fichier global.asax;

Si vous devez l'exécuter dans global.asax> Application_Start et que le mode de pool d'applications est intégré, vous recevrez le message d'erreur ci-dessous:

La demande n'est pas disponible dans cette exception de contexte dans Application_Start.

Dans ce cas, vous devez utiliser ceci:

System.Web.HttpRuntime.AppDomainAppVirtualPath

L'espoir aidera les autres ..

12
dvdmn

Une recherche m'a atterri sur cette page, mais ce n'était pas vraiment ce que je cherchais. Publier ici au cas où quelqu'un d'autre cherche ce que j'étais atterit également sur cette page.

Il existe deux manières de le faire si vous n’avez qu’une valeur de chaîne.

Manière .NET:

Identique à @Canavar, mais vous pouvez instancier un nouvel objet Uri

String URL = "http://localhost:1302/TESTERS/Default6.aspx";
System.Uri uri = new System.Uri(URL);

ce qui signifie que vous pouvez utiliser les mêmes méthodes, par exemple.

string url = uri.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx

string Host = uri.Host
// localhost

Façon regex:

Obtenir des parties d'une URL (Regex)

9
Ben Pearson

Je suppose que cela suffit pour retourner chemin absolu ..

 Path.GetFileName( Request.Url.AbsolutePath )

using System.IO;

6
Mayank Pathak