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

Мне нужно иметь возможность получить полный URL-адрес страницы, с которой я подключен, от пользовательского элемента управления. Это просто вопрос объединения связки переменных запроса? Если да, то какие? Или есть ли еще способ simpiler?

Ответ 1

Я обычно использую Request.Url.ToString(), чтобы получить полный url (включая запрос), не требуется никакого конкатенации.

Ответ 2

Вот список, на который я обычно ссылаюсь для этого типа информации:

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

Надеюсь, вы найдете это полезным!

Ответ 3

Request.Url.AbsoluteUri

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

Ответ 4

Request.RawUrl

Ответ 5

если вам нужен полный URL-адрес как все, начиная с http до строки запроса, вам нужно будет объединить следующие переменные

Request.ServerVariables("HTTPS") // to check if it HTTP or HTTPS
Request.ServerVariables("SERVER_NAME") 
Request.ServerVariables("SCRIPT_NAME") 
Request.ServerVariables("QUERY_STRING")

Ответ 7

Спасибо, ребята, я использовал комбинацию ваших ответов @Christian и @Jonathan для моей конкретной потребности.

"http://" + Request.ServerVariables["SERVER_NAME"] +  Request.RawUrl.ToString()

Мне не нужно беспокоиться о безопасном http, нужна переменная servername, а RawUrl обрабатывает путь от имени домена и включает в себя запрос, если он присутствует.

Ответ 8

Если вам нужен номер порта, вы можете использовать

Request.Url.Authority

Пример:

string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString();

if (Request.ServerVariables["HTTPS"] == "on")
{
    url = "https://" + url;
}
else 
{
    url = "http://" + url;
}

Ответ 9

Для ASP.NET Core вам нужно указать:

@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")

Или вы можете добавить инструкцию к вашему представлению:

@using Microsoft.AspNetCore.Http.Extensions

затем

@Context.Request.GetDisplayUrl()

_ViewImports.cshtml может быть лучшим местом для этого @using