Есть ли в .NET простой способ быстро получить текущий протокол, хост и порт? Например, если я нахожусь по следующему URL:
http://www.mywebsite.com:80/pages/page1.aspx
Мне нужно вернуть:
http://www.mywebsite.com:80
Я знаю, что могу использовать Request.Url.AbsoluteUri
для получения полного URL-адреса, и я знаю, что могу использовать Request.Url.Authority
для получения хоста и порта, но я не уверен в наилучшем способе получить протокол без разбора строки URL-адреса.
Какие-либо предложения?
Ответы:
Следующий (C #) код должен помочь
источник
Uri.GetLeftPart
как указывает @dthrasherНесмотря на то, что @Rick имеет приемлемый ответ на этот вопрос, на самом деле есть более короткий способ сделать это, используя
Uri.GetLeftPart()
метод с плохим именем .Однако есть одна загвоздка
GetLeftPart()
. Если порт является портом по умолчанию для схемы, он удалит его. Так как порт 80 является портом по умолчанию для http, выводGetLeftPart()
в моем примере выше будетhttp://www.mywebsite.com
.Если бы номер порта отличался от 80, он был бы включен в результат.
источник
Uri
класс таким образом. Существует множество случаев, когда этот конструктор создает исключение. В большинстве случаев я предпочитаю, чтобы мой код был немного более прощающим, чем прерывать задачу под рукой.Хорошо, если вы делаете это в Asp.Net или имеете доступ к HttpContext.Current.Request, я бы сказал, что это более простые и более общие способы их получения:
Надеюсь, это поможет. :)
источник
Более структурированный способ получить это - использовать UriBuilder. Это позволяет избежать прямых манипуляций со строками.
источник
Request.Url вернет вам Uri запроса. Когда у вас есть это, вы можете получить практически все, что захотите. Чтобы получить протокол, вызовите свойство Scheme .
Образец:
Надеюсь это поможет.
источник
Еще короче, может потребоваться более новый ASP.Net:
Перечисление UriComponents позволяет вам указать, какие компоненты URI вы хотите включить.
источник
Очень похоже на ответ Хольгера. Если вам нужно захватить URL, можно сделать что-то вроде:
Класс Uri предоставляет целый ряд методов, многие из которых я не перечислил.
В моем случае мне нужно было взять
LocalHost
с собойPort Number
, вот что я сделал:Который успешно схватил:
http://localhost:12345
источник