【问题标题】:Multitenancy in asp.net web formsasp.net web 表单中的多租户
【发布时间】:2012-03-05 20:52:50
【问题描述】:

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

【问题讨论】:

    标签: asp.net webforms subdomain multi-tenant


    【解决方案1】:

    您必须正确配置 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];
        }  
    }
    

    【讨论】:

    • 我认为这对他没有帮助。他明确要求解决方案不使用 IIS。没有说我的答案当然更好
    • @CrabBucket,我猜你没抓住重点。 OP 需要在 Web 服务器级别进行配置 - 包括路由(或任何应用程序/ISAPI 级别代码)的 ASP.NET 代码只有在请求可以成功到达 ASP.NET 运行时(需要 IIS 配置)时才会发挥作用.
    • 我没有抓住重点。不同主机的默认值不同。我想一定有别的东西。谢谢你 - 我正在删除我的答案
    • 我也错过了螃蟹。感谢 vinay 的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2018-08-21
    相关资源
    最近更新 更多