Как получить 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 путь:
Я думаю, этого достаточно, чтобы вернуть абсолютный путь..
Path.GetFileName( Request.Url.AbsolutePath )
используя System.IO;