Qualcuno può aiutarmi a ottenere l'URL della pagina di lavoro corrente di ASP.NET in C #?
Prova questo :
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
A volte potresti aver bisogno di ottenere valori diversi dall'URL.
L'esempio seguente mostra diversi modi per estrarre parti diverse dell'URL
ESEMPIO: (URL di esempio)
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);
OUTPUT
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
È possibile copiare incolla sopra il codice di esempio ed eseguirlo in un'applicazione di modulo Web asp.net con URL diversi.
Raccomando anche di leggere il routing ASP.Net nel caso in cui si possa usare ASP Routing, quindi non è necessario utilizzare l'URL tradizionale con stringa di query.
http://msdn.Microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
Semplicemente condividere questa è stata la mia soluzione grazie al post di Canavar.
Se hai qualcosa del genere:
"http://localhost:1234/Default.aspx?un=asdf&somethingelse=fdsa"
o in questo modo:
"https://www.something.com/index.html?a=123&b=4567"
e vuoi solo la parte che un utente dovrebbe digitare, allora funzionerà:
String strPathAndQuery = HttpContext.Current.Request.Url.PathAndQuery;
String strUrl = HttpContext.Current.Request.Url.AbsoluteUri.Replace(strPathAndQuery, "/");
quale risulterebbe in questi:
"http://localhost:1234/"
"https://www.something.com/"
se vuoi solo la parte tra http: // e la prima barra
string url = Request.Url.Host;
restituirebbe stackoverflow.com se chiamato da questa pagina
Ecco il completa analisi
il request.rawurl fornisce il contenuto della pagina corrente, fornisce il percorso esatto richiesto
usa HttpContext.Current.Request.RawUrl
Se vuoi ottenere
localhost:2806
a partire dal
http://localhost:2806/Pages/
quindi utilizzare:
HttpContext.Current.Request.Url.Authority
un consiglio per chi ha bisogno del percorso/url nel file global.asax;
Se è necessario eseguirlo in global.asax> Application_Start e la modalità del pool di applicazioni è integrated , allora si riceverà l'errore seguente:
La richiesta non è disponibile in questa eccezione di contesto in Application_Start.
In tal caso è necessario utilizzare questo:
System.Web.HttpRuntime.AppDomainAppVirtualPath
La speranza aiuterà gli altri ..
Una ricerca mi ha colpito a questa pagina, ma non era proprio quello che stavo cercando. Pubblicazione qui nel caso in cui qualcun altro cerchi ciò che ero atterra anche in questa pagina.
Ci sono due modi per farlo se si ha solo un valore di stringa.
Modo .NET:
Come @Canavar, ma puoi creare un'istanza di un nuovo oggetto Uri
String URL = "http://localhost:1302/TESTERS/Default6.aspx";
System.Uri uri = new System.Uri(URL);
il che significa che puoi utilizzare gli stessi metodi, ad es.
string url = uri.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx
string Host = uri.Host
// localhost
Modo Regex:
Suppongo sia sufficiente per restituire il percorso assoluto ..
Path.GetFileName( Request.Url.AbsolutePath )
using System.IO;