2012-03-05 96 views
1

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

回答

2

您必须为此工作正确配置IIS(也许DNS)。例如,您的所有子域都应由IIS中的指定网站处理。通常情况下,如果只有一个Web站点,则可以将IIS配置为处理所有主机头,但在多个Web站点的情况下,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]; 
    } 
} 
+0

我不认为这对他有帮助。他明确要求解决方案不要使用IIS。不要说我的答案当然更好 – 2012-03-06 09:36:35

+1

@CrabBucket,我猜你错过了这一点。什么OP需要在Web服务器级别配置 - 只有当请求能够成功到达ASP.NET运行时(需要IIS配置)时,包括路由(或任何应用程序/ ISAPI级别代码)的ASP.NET代码才会发挥作用。 。 – VinayC 2012-03-06 11:19:29

+0

我错过了这一点。这是不同主机的不同默认值。我认为必须有别的东西。谢谢你 - 我删除了我的答案 – 2012-03-06 11:39:21