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

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

Ответы

Ответ 1

Попробуйте следующее:

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

Ответ 2

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

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

ПРИМЕР: (Пример 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);

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

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

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

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

Ответ 3

Просто поделился, так как это было моим решением благодаря сообщению Canavar.

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

"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/"

Ответ 4

если вам просто нужна часть между http://и первой косой чертой

string url = Request.Url.Host;

будет возвращать stackoverflow.com, если вызвано с этой страницы

Здесь полная разбивка

Ответ 5

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

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

Ответ 6

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

localhost:2806 

из

http://localhost:2806/Pages/ 

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

HttpContext.Current.Request.Url.Authority

Ответ 7

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

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

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

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

System.Web.HttpRuntime.AppDomainAppVirtualPath

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

Ответ 8

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

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

Способ .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

Регулярный путь:

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

Ответ 9

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

 Path.GetFileName( Request.Url.AbsolutePath )

с использованием System.IO;