www.somedomain.com to domena / host. Subdomena jest ważną częścią. www.jest często używany zamiennie z brakiem, ale to musi być ustawione jako zasada (nawet jeśli jest ustawione domyślnie), ponieważ nie są równoważne. Pomyśl o innej subdomenie, na przykład mx.. To prawdopodobnie ma inny cel niż www..
Biorąc to pod uwagę, radziłbym nie robić tego rodzaju rzeczy. To powiedziawszy, ponieważ pytasz, wyobrażam sobie, że masz dobry powód.
Osobiście sugerowałbym www.do tego specjalną obudowę .
string host = HttpContext.Current.Request.Url.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped);;
if (host.StartsWith("www."))
return host.Substring(4);
else
return host;
W przeciwnym razie, jeśli jesteś naprawdę w 100% pewien, że chcesz odciąć jakąkolwiek subdomenę, będziesz potrzebować czegoś nieco bardziej skomplikowanego.
string host = ...;
int lastDot = host.LastIndexOf('.');
int secondToLastDot = host.Substring(0, lastDot).LastIndexOf('.');
if (secondToLastDot > -1)
return host.Substring(secondToLastDot + 1);
else
return host;
Dostanie się do portu jest takie, jak mówili inni.