【问题标题】:Multiple instances of an ASP.net application from a single web site configuration in IIS来自 IIS 中单个网站配置的 ASP.net 应用程序的多个实例
【发布时间】:2011-04-13 08:28:49
【问题描述】:

正如标题所示,我想在 IIS 中创建一个网站,该网站根据请求的主机创建 ASP.net 应用程序的多个实例。

这样所有实例都运行相同的代码库,但每个实例都有自己的应用程序对象、会话的集合等。

例如:

host1.domain.tld/default.aspx -> this.Application["foo"] = "host1" host2.domain.tld/default.aspx -> this.Application["foo"] = "host2" host3.domain.tld/default.aspx -> this.Application["foo"] = "host3"

我知道我可以将 IIS 配置为侦听特定 IP 地址,并将 host(1|2|3).domain.tld 的 DNS 设置为指向该 IP 地址。然后使用 Global.asax 检查请求的主机以设置主机特定设置。但应用程序仍将作为服务器上的单个实例运行。

我宁愿为每个主机运行多个应用程序实例,以便它们的运行时完全分离,如果我也可以将它们放在单独的应用程序池中也很好,但这并不是那么重要

当然,我可以将站点单独添加到服务器上的 IIS 中,但是需要配置大约 1600 个实例,这将非常耗时且难以管理。

能够在多个服务器上设置单个实例,然后通过 DNS 配置或防火墙上的过滤来控制负载平衡,这两者都可以通过编程方式轻松控制。

仅供参考 - 使用的 asp.net 版本是 4.0,IIS 在 Windows Server 2008 上运行。

任何建议都会很棒。

非常感谢

【问题讨论】:

    标签: c# .net asp.net iis


    【解决方案1】:

    最简单、最可靠的方法是设置单独的 IIS 站点。我知道您不想这样做,因为它非常耗时并且肯定难以管理。

    但是,您已经创建了一个网站,所以现在也许是时候为该网站的实例创建一个管理工具了。由于您要配置 1600 个实例,因此很有可能您已经将这 1600 个实例的详细信息存储在某个位置,例如数据库或电子表格。

    所以:

    1. 将有关 1600 个实例的数据转换为可用格式,Sql Server 数据库(Express 或付费!)可能是理想的。
    2. 调查IIS7 provisioning APIs
    3. 整合一个工具,让您可以通过 IIS7 API 自动/批量创建所有 1600 个实例。
    4. 维护工具并对其进行扩展,以便在您需要添加或删除实例时进行不可避免的更改。

    不要忘记,将您自己的工具组合在一起完成这样的任务会给您带来很大的灵活性,尽管为此目的可能存在一些值得研究的工具。为此(即非编程解决方案),我建议在http://www.serverfault.com

    【讨论】:

    • Rob 非常感谢您的建议,无论如何,这有点像我想去的方式。最初让我失望的是我过去使用 IIS5/6 XML 元数据库的经验——似乎 IIS7 API 具有更好的文档并且更易于使用。非常感谢。
    • @hokapoka - 很高兴我能提供帮助,但很抱歉我无法建议“一键式解决方案”。我认为您的需求有点太专业了,以至于没有不涉及付款的需求,而且我不知道此类产品。 =)
    • @hokapoka,是的 IIS7 API 在 5/6 元数据库的混乱之后是一股清新的空气。我相信您也可以将您的解决方案编写为 IIS 管理工具的插件,这将为您提供一个完全集成的解决方案。我认为这就是 SEO 工具包 (iis.net/download/seotoolkit) 的工作原理。
    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多