Multitenancy в веб-формах asp.net - PullRequest
1 голос
/ 05 марта 2012

Я создал новое приложение веб-форм в Visual Studio 2010 с двумя страницами Default.aspx и About.aspx.я хочу, чтобы при отладке приложения на сервере разработки Visual Studio оно и ввод http://company1.localhost:1023 отображало страницу по умолчанию с сообщением This is default page for company1.Как я могу сделать это, просто играя с маршрутизацией URL, а не с настройками в IIS
Примечание: Я понимаю, что многопользовательский режим - это большое слово, и его не следует использовать для такого простого сценария, номои требования простыя бы просто запустил один и тот же экземпляр приложения для каждой компании без точек расширения.Этот вопрос также может быть сформулирован как то, как я могу создать поддомен программно.

1 Ответ

2 голосов
/ 05 марта 2012

Вы должны правильно настроить IIS (и, возможно, DNS) для этой работы. Например, все ваши субдомены должны обрабатываться указанным веб-сайтом в IIS. Как правило, вы можете настроить IIS для обработки всех заголовков хостов, если существует только один веб-сайт, но в случае нескольких веб-сайтов IIS обычно настраивается на различение по заголовку хоста. Поэтому правильная настройка - важная часть для вас.

Как только вы перейдете на правильный веб-сайт, обработка ресурсов будет осуществляться мета-базой IIS. Поэтому в этом случае он будет перенаправлен на настроенный ресурс по умолчанию для сайта. Если имя ресурса присутствует, расширение (htm, aspx) решит обработку. Расширения Aspx будут обрабатываться ASP.NET, а затем все, что вам нужно сделать, это посмотреть текущий заголовок хоста и принять соответствующее решение. Например,

protected void Page_Load(object sender, EventArgs e)
{
    if (request.Url.HostNameType == UriHostNameType.Dns)
    {
       var hostParts = Request.Url.Host.Split('.');
       // you may validate if sub-domain name is present or not
       lblMessage.Text = "This is default page for " + hostParts[0];
    }  
}
...