Как проверить субдомены на машине разработки? abc.localhost
Я пытаюсь создать сайт asp.net с несколькими субдоменами. Я новичок в веб-сайтах в целом и asp.net в частности. Тем не менее, кажется, что поддомены подстановочных шаблонов правильно настроены с использованием комбинации записей DNS и конфигурации веб-сервера, что не будет происходить на моей машине разработки. Поэтому я вручную вставляю записи в свои окна файл hosts:
127.0.0.1 localhost
127.0.0.1 abc.localhost
127.0.0.1 xyz.localhost
Однако, когда я пытаюсь опросить свойство Request.Url, не будет видно субдомена. Например, если я ударил http://abc.localhost:1660/
в браузере, я получаю http://localhost:1660/
от Request.Uri.ToString()
; abc
просто ушел?!
Я не знаю, почему файл hosts работает так, но есть ли какой-либо другой метод, который я могу использовать для получения субдоменов в моем локальном веб-приложении? Спасибо всем.
Обратите внимание, что я использую только встроенный сервер разработки asp.net, а не полный сервер iis. (Я не могу получить доступ к полному IIS в эти выходные, но мне все равно хотелось бы знать, поможет ли это.)
Ответы
Ответ 1
Вы можете получить запрошенный домен с неподходящим субдоменом, используя "Request.Headers [" HOST "]". Вот простой метод, возвращающий поддомен текущего запроса. Этот метод также предполагает, что у вас есть ".COM", ".NET" и т.д. После домена, как и в реальной сети. Таким образом, вы захотите изменить свой файл HOSTS на "localhost.com", "abc.localhost.com" и т.д.
public string subdomain()
{
string host = Request.Headers["HOST"];
if (!string.IsNullOrEmpty(host))
{
var parts = host.Split('.');
if (parts.Length > 2)
{
return parts[0];
}
}
return string.Empty;
}
Я искал именно это, и вот статья, которая на самом деле помогла мне разобраться в этом:
https://web.archive.org/web/20090813174916/http://blogs.securancy.com/post/ASPNET-MVC-Subdomain-Routing.aspx
Ответ 2
Не знаю о заголовках, но один малоизвестный трюк, который я использовал, состоит в том, что все адреса 127. * являются адресами localhost, а не только 127.0.0.1. Фактически вы можете запустить один сервер, прослушивающий порт 127.0.0.1 80, и другой экземпляр веб-сервера, прослушивающий 127.0.0.2 порт 80. Таким образом, вы бы назвали 127.0.0.1 localhost, 127.0.0.2 может быть abc.localhost(или abc.mydomain.com, чтобы вы могли протестировать реальные живые URL-адреса против вашего локального веб-сервера) и т.д.
Ответ 3
Я использую Windows 7, IIS 7.5, VS 2008, SQL Server 2005
Мне удалось успешно имитировать субдомен на localhost buy, поместив следующую строку в etc/hosts
127.0.0.2 myapp.localhost.com
а в IIS я установил новый веб-сайт со следующими изменениями в разделе привязок:
Hostname = myapp.localhost.com
IP address = 127.0.0.2
Я также создал новый пул приложений, но это необязательно. Возможно, вам придется изменить пользователя auth, который используется для работы с запросами. У меня были ошибки разрешения подключений SQL с пользователем IIS по умолчанию.
IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem