Для меня @ warlock выглядит как лучший ответ здесь, но я всегда использовал это в прошлом;
string baseUrl = Request.Url.GetComponents(
UriComponents.SchemeAndServer, UriFormat.UriEscaped)
Или в контроллере WebAPI;
string baseUrl = Url.Request.RequestUri.GetComponents(
UriComponents.SchemeAndServer, UriFormat.Unescaped)
, что удобно, так что вы можете выбрать нужный вам формат выхода.Мне непонятно, почему есть две такие разные реализации, и, насколько я могу судить, этот метод и @ warlock возвращают точно такой же результат в этом случае, но похоже, что GetLeftPart()
также будет работать для несерверного Uri, какmailto
тегов, например.