www.somedomain.com
является домен/хост. Субдомен является важной частью. www.
часто используется взаимозаменяемо, не имея одного, но это должно быть установлено как правило (даже если оно установлено по умолчанию), потому что они не эквивалентны. Подумайте о другом субдомене, например mx.
. Вероятно, у него другая цель, чем www.
.
Учитывая, что я бы посоветовал не делать такого рода вещи. Тем не менее, поскольку вы спрашиваете, я думаю, у вас есть веская причина.
Лично я предложил бы специальный корпус www.
.
string host = HttpContext.Current.Request.Url.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped);;
if (host.StartsWith("www."))
return host.Substring(4);
else
return host;
В противном случае, если вы на самом деле 100% уверен, что вы хотите, чтобы отрубить любой субдомен, вам нужно что-то чуть более сложный.
string host = ...;
int lastDot = host.LastIndexOf('.');
int secondToLastDot = host.Substring(0, lastDot).LastIndexOf('.');
if (secondToLastDot > -1)
return host.Substring(secondToLastDot + 1);
else
return host;
Как добраться до порта, как и другие люди.
Hostname и доменное имя 2 разные вещи. Вы хотите домен, который отображается на ваш конкретный IP-адрес, или имя хоста машины, на которой он запущен? –
Возможный дубликат [Какой лучший метод в ASP.NET для получения текущего домена?] (Http://stackoverflow.com/questions/61817/whats-the-best-method-in-asp-net-to-obtain -the-current-domain) – Gitz