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;
Получение порта происходит так же, как и другие люди.