Подтвердить что ты не робот

Как проверить субдомены на машине разработки? 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 в эти выходные, но мне все равно хотелось бы знать, поможет ли это.)

4b9b3361

Ответ 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