Как получить полный url-адрес страницы, на которой я нахожусь в C#
Мне нужно иметь возможность получить полный URL-адрес страницы, на которой я нахожусь, из пользовательского элемента управления. Это просто вопрос объединения нескольких переменных запроса вместе? Если да, то какие? Или есть более простой способ?
9 ответов:
Я обычно использую
Request.Url.ToString()чтобы получить полный url (включая строку запроса), не требуется конкатенация.
вот список, который я обычно ссылаюсь на этот тип информации:
Request.ApplicationPath : /virtual_dir Request.CurrentExecutionFilePath : /virtual_dir/webapp/page.aspx Request.FilePath : /virtual_dir/webapp/page.aspx Request.Path : /virtual_dir/webapp/page.aspx Request.PhysicalApplicationPath : d:\Inetpub\wwwroot\virtual_dir\ Request.QueryString : /virtual_dir/webapp/page.aspx?q=qvalue Request.Url.AbsolutePath : /virtual_dir/webapp/page.aspx Request.Url.AbsoluteUri : http://localhost:2000/virtual_dir/webapp/page.aspx?q=qvalue Request.Url.Host : localhost Request.Url.Authority : localhost:80 Request.Url.LocalPath : /virtual_dir/webapp/page.aspx Request.Url.PathAndQuery : /virtual_dir/webapp/page.aspx?q=qvalue Request.Url.Port : 80 Request.Url.Query : ?q=qvalue Request.Url.Scheme : http Request.Url.Segments : / virtual_dir/ webapp/ page.aspxнадеюсь, вы найдете это полезным!
Если вам нужен полный URL-адрес как все от http до строки запроса, вам нужно будет объединить следующие переменные
Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS Request.ServerVariables("SERVER_NAME") Request.ServerVariables("SCRIPT_NAME") Request.ServerVariables("QUERY_STRING")
Спасибо, ребята, я использовал комбинацию обоих ваших ответов @Christian и @Jonathan для моей конкретной потребности.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()мне не нужно беспокоиться о безопасном http, нужна переменная servername, а RawUrl обрабатывает путь от имени домена и включает строку запроса, если она присутствует.
лучше использовать
Request.Url.OriginalStringчемRequest.Url.ToString()(по MSDN)
на
ASP.NET Coreвам нужно будет изложить это:@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")или вы можете добавить оператор using в свой вид:
@using Microsoft.AspNetCore.Http.Extensionsзатем
@Context.Request.GetDisplayUrl()The
_ViewImports.cshtmlможет быть, лучшее место для этого@using