Имя хоста файла хоста не возвращается в c # ASP.NET MVC - PullRequest
8 голосов
/ 30 марта 2012

В настоящее время я тестирую сайт с несколькими поддоменами, указывающими на одно и то же приложение ASP.NET, и маршрутизация определяет, что делать с каждым запросом.

Для тестирования я добавил несколько поддоменов в свой домен."hosts file", например "127.0.0.1 admin.TestDomain.com", который работает нормально.

Однако проблема заключается в том, что когда я вызываю любую функцию в c #, чтобы получить имя хоста / домен / url(HttpContext.Current.Request.Url ...), URL хоста всегда возвращается с «localhost», а не «TestDomain».

Любые идеи, почему это имя разрешается таким образом и гдеЯ могу заполучить "TestDomain.com"?

1 Ответ

11 голосов
/ 26 апреля 2012

Я думаю, оригинальный хост теряется после сопоставления домена с IP-адресом (localhost) локальной операционной системой с вашим файлом "host".Вместо этого вы можете попробовать RawUrl , чтобы получить точный URL-адрес, введенный в браузере:

HttpContext.Current.Request.RawUrl  

Также вы можете попробовать извлечь HTTP_HOST переменную из пользовательского Host: заголовка запроса, он должен содержать оригинальныйхост (не адрес или хост сервера по умолчанию) браузер пытается запросить:

string requestedDomain = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];

Может Получение параметров из статьи RawUrl будет полезно.

...