Как получить URL текущей страницы в C#

Может кто-нибудь помочь мне получить URL-адрес текущей рабочей страницы ASP.NET в C#?

9 ответов

Попробуй это:

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

Иногда вам может понадобиться получить разные значения из URL.

Ниже приведен пример различных способов извлечения разных частей URL.

ПРИМЕР: (пример URL)

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

КОД

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);

ВЫХОД

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

Вы можете скопировать приведенный выше пример кода и запустить его в приложении веб-формы asp.net с другим URL.

Я также рекомендую прочитать ASP.Net Routing, если вы можете использовать ASP Routing, тогда вам не нужно использовать традиционный URL со строкой запроса.

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

Просто поделиться, так как это было моим решением благодаря посту Канавара.

Если у вас есть что-то вроде этого:

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

или вот так:

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

и вам нужна только та часть, которую пользователь наберет, тогда это будет работать:

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

что привело бы к этим:

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

Если вы просто хотите разделить http:// и первый слеш

string url = Request.Url.Host;

вернет stackru.com, если вызывается с этой страницы

Вот полная разбивка

request.rawurl выдаст содержимое текущей страницы и даст точный путь, который вам нужен

использование HttpContext.Current.Request.RawUrl

Если вы хотите получить

localhost:2806 

от

http://localhost:2806/Pages/ 

затем используйте:

HttpContext.Current.Request.Url.Authority

Совет для людей, которым нужен путь / URL в файле global.asax;

Если вам нужно запустить это в global.asax > Application_Start и режим пула приложений интегрирован, вы получите ошибку ниже:

Запрос не доступен в этом контексте исключение в Application_Start.

В этом случае вам нужно использовать это:

System.Web.HttpRuntime.AppDomainAppVirtualPath

Надеюсь поможет другим..

Поиск застал меня на этой странице, но это было не совсем то, что я искал. Публикация здесь на случай, если кто-то еще ищет, что я был, тоже на этой странице.

Есть два способа сделать это, если у вас есть только строковое значение.

.NET путь:

То же, что и @Canavar, но вы можете создать новый объект Uri

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

Это означает, что вы можете использовать те же методы, например,

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

string host = uri.host
// localhost

Regex путь:

Получение частей URL (Regex)

Я думаю, этого достаточно, чтобы вернуть абсолютный путь..

 Path.GetFileName( Request.Url.AbsolutePath )

используя System.IO;

Другие вопросы по тегам