.NET - получить протокол, хост и порт
148704 просмотра
7 ответа
Есть ли в .NET простой способ быстро получить текущий протокол, хост и порт? Например, если я нахожусь по следующему URL:
http://www.mywebsite.com:80/pages/page1.aspx
Мне нужно вернуть:
http://www.mywebsite.com:80
Я знаю, что могу использовать Request.Url.AbsoluteUri
для получения полного URL-адреса, и я знаю, что могу использовать Request.Url.Authority
для получения хоста и порта, но я не уверен в наилучшем способе получить протокол без разбора строки URL-адреса.
Какие-либо предложения?
Автор: Jeremy Источник Размещён: 11.11.2019 03:26Ответы (7)
161 плюса
Следующий (C #) код должен помочь
Uri uri = new Uri("http://www.mywebsite.com:80/pages/page1.aspx");
string requested = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;
Автор: Rick
Размещён: 22.08.2008 01:35
388 плюса
Даже несмотря на то, что у @Rick есть приемлемый ответ на этот вопрос, на самом деле есть более короткий способ сделать это, используя плохо названный Uri.GetLeftPart()
метод.
Uri url = new Uri("http://www.mywebsite.com:80/pages/page1.aspx");
string output = url.GetLeftPart(UriPartial.Authority);
Однако есть одна загвоздка GetLeftPart()
. Если порт является портом по умолчанию для схемы, он удалит его. Поскольку порт 80 является портом по умолчанию для http, вывод GetLeftPart()
в моем примере выше будет http://www.mywebsite.com
.
Если бы номер порта отличался от 80, он был бы включен в результат.
Автор: dthrasher Размещён: 23.02.2009 03:4558 плюса
Хорошо, если вы делаете это в Asp.Net или имеете доступ к HttpContext.Current.Request, я бы сказал, что это более простые и более общие способы их получения:
var scheme = Request.Url.Scheme; // will get http, https, etc.
var host = Request.Url.Host; // will get www.mywebsite.com
var port = Request.Url.Port; // will get the port
var path = Request.Url.AbsolutePath; // should get the /pages/page1.aspx part, can't remember if it only get pages/page1.aspx
Надеюсь, это поможет. :)
Автор: Holger Размещён: 16.11.2010 02:4231 плюса
Более структурированный способ получить это - использовать UriBuilder. Это позволяет избежать прямых манипуляций со строками.
var builder = new UriBuilder(Request.Url.Scheme, Request.Url.Host, Request.Url.Port);
Автор: Haonan Tan
Размещён: 08.03.2011 09:56
22 плюса
Request.Url вернет вам Uri запроса. Если у вас есть это, вы можете получить практически все, что захотите. Чтобы получить протокол, вызовите свойство Scheme .
Образец:
Uri url = Request.Url;
string protocol = url.Scheme;
Надеюсь это поможет.
Автор: Dale Ragan Размещён: 22.08.2008 02:4817 плюса
Еще короче, может потребоваться более новый ASP.Net:
string authority = Request.Url.GetComponents(UriComponents.SchemeAndServer,UriFormat.Unescaped)
Перечисление UriComponents позволяет указать, какие компоненты URI вы хотите включить.
Автор: Mark Shapiro Размещён: 16.09.2015 06:078 плюса
Очень похоже на ответ Хольгера. Если вам нужно захватить URL, можно сделать что-то вроде:
Uri uri = Context.Request.Url;
var scheme = uri.Scheme // returns http, https
var scheme2 = uri.Scheme + Uri.SchemeDelimiter; // returns http://, https://
var host = uri.Host; // return www.mywebsite.com
var port = uri.Port; // returns port number
Класс Uri предоставляет целый ряд методов, многие из которых я не перечислил.
В моем случае мне нужно было взять LocalHost
с собой Port Number
, вот что я сделал:
var Uri uri = Context.Request.Url;
var host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;
Который успешно схватил: http://localhost:12345
Вопросы из категории :
- .net Как рассчитать чей-то возраст в C #?
- .net Как вы сортируете словарь по значению?
- .net Как создать новый экземпляр объекта из Типа
- .net Действительно ли опечатанные классы действительно предлагают преимущества?
- asp.net Контрольный список для проверки подлинности Windows IIS 6 / ASP.NET?
- asp.net Валидация клиентской стороны ASP.Net
- asp.net .NET - получить протокол, хост и порт
- asp.net Как получить полный URL страницы, на которой я нахожусь в C #
- url Это имя файла или весь URL, используемый в качестве ключа в кеше браузера?
- url URL-адрес в Erlang
- url Как я могу нормализовать URL в Python
- uri Заменить хост в Ури
- uri Пример URI, который не является URL-адресом?
- uri How to send mail with a Subject using a Mailto URL?
- authority Надлежащее использование власти в приложении рельсов
- authority Центр сертификации мобильных приложений iOS
- authority Как позвонить на авторитетный сервер для ip response?