asp.net Web表单中的多租户

时间:2012-03-05 11:37:14

标签: asp.net webforms subdomain multi-tenant

我在visual studio 2010中创建了一个新的网络表单应用程序,只有两页Default.aspxAbout.aspx。我想要的是,当我在visual studio开发服务器中调试应用程序并输入http://company1.localhost:1023时,它应该只显示带有消息This is default page for company1的默认页面。我怎么能只使用URL路由而不是在IIS中进行设置 注意:我知道多租户是个大字,不应该用于这么简单的场景,但我的要求很简单。我只会为没有扩展点的每家公司运行相同的应用程序实例。这个问题也可以说明如何以编程方式创建子域名。

1 个答案:

答案 0 :(得分:2)

您必须为此工作正确配置IIS(可能还有DNS)。例如,所有子域都应由IIS中指定的Web站点处理。通常,如果只有一个网站,则可以将IIS配置为处理所有主机标头,但如果有多个网站,则IIS通常配置为按主机标头不同。因此,正确配置这一配置对您来说非常重要。

一旦到达正确的网站,资源处理将由IIS meta-base完成。因此,在这种情况下,它将重定向到站点的已配置默认资源。如果存在resource-name,则扩展(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];
    }  
}