Как протестировать поддомен на компьютере разработчика? abc.localhost - PullRequest
17 голосов
/ 16 мая 2009

Я пытаюсь создать сайт asp.net с несколькими поддоменами. Я новичок на веб-сайтах в целом, и asp.net в частности. Однако, похоже, что поддомены с подстановочными символами правильно настроены с помощью комбинации записей DNS и конфигурации веб-сервера, чего не произойдет на моей машине для разработки. Поэтому я вручную вставляю записи в мой файл windows 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 в эти выходные, но я все еще хотел бы знать, поможет ли это.)

Ответы [ 3 ]

11 голосов
/ 09 октября 2009

Я использую Windows 7, IIS 7.5, VS 2008, SQL Server 2005

Мне удалось успешно смоделировать субдомен при покупке localhost, поместив следующую строку в 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
11 голосов
/ 16 мая 2009

Не знаю насчет заголовков, но одна малоизвестная уловка, которую я использовал, заключается в том, что все 127. * адреса являются адресами локального хоста, а не просто 127.0.0.1. На самом деле вы можете запустить один сервер, прослушивающий порт 80.0.0.1, а другой экземпляр веб-сервера, прослушивающий порт 80.0.0.2. Тогда вы назовете 127.0.0.1 localhost, 127.0.0.2 может быть abc.localhost (или abc.mydomain .com, чтобы вы могли проверить реальные живые URL-адреса на своем локальном веб-сервере) и т. д.

9 голосов
/ 18 августа 2009

Вы можете получить запрошенный домен с субдоменом без изменений, используя " 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...