Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net web窗体中的多租户_Asp.net_Webforms_Subdomain_Multi Tenant - Fatal编程技术网

asp.net web窗体中的多租户

asp.net web窗体中的多租户,asp.net,webforms,subdomain,multi-tenant,Asp.net,Webforms,Subdomain,Multi Tenant,我在VisualStudio2010中创建了一个新的web表单应用程序,它只有两个页面Default.aspx和About.aspx。我想要的是,当我在VisualStudioDevelopmentServer中调试应用程序时,请将其删除并输入http://company1.localhost:1023它应该只显示带有消息的默认页面这是公司1的默认页面。与在IIS中进行设置相比,如何只使用url路由进行设置 注意:我知道多租户是一个大词,不应该用于如此简单的场景,但我的要求很简单。我只为每个公司

我在VisualStudio2010中创建了一个新的web表单应用程序,它只有两个页面
Default.aspx
About.aspx
。我想要的是,当我在VisualStudioDevelopmentServer中调试应用程序时,请将其删除并输入
http://company1.localhost:1023
它应该只显示带有消息的默认页面
这是公司1的默认页面
。与在IIS中进行设置相比,如何只使用url路由进行设置
注意:我知道多租户是一个大词,不应该用于如此简单的场景,但我的要求很简单。我只为每个公司运行相同的应用程序实例,没有扩展点。这个问题也可以表述为如何以编程方式创建子域。

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

一旦到达正确的网站,资源处理将由IIS元库完成。因此,在这种情况下,它将重新定向到为站点配置的默认资源。如果存在资源名称,则扩展名(htm、aspx)将决定处理。ASP.NET将处理Aspx扩展,然后您需要做的就是查找当前主机头并做出相应的决定。比如说,

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];
    }  
}

我认为这对他没有帮助。他明确提出了不使用IIS的解决方案。不要说我的答案比你的好course@CrabBucket,我想你没抓住重点。OP需要在web服务器级别进行配置-ASP.NET代码,包括路由(或任何应用程序/ISAPI级别的代码),只有在请求能够成功到达ASP.NET运行时(需要IIS配置)时才会起作用。我没有抓住要点。不同的主机有不同的默认设置。我想一定还有别的事。谢谢你-我正在删除我的答案我也错过了。谢谢vinay的帮助