IIS中单个网站配置的ASP.net应用程序的多个实例

时间:2011-04-13 08:28:49

标签: c# .net asp.net iis

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

这样所有实例都运行相同的代码库,但每个实例都有自己的Application对象,Session的集合等。

例如:

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地址,并将主机(1 | 2 | 3).domain.tld的DNS设置为指向此IP地址。然后使用Global.asax检查请求的主机以设置主机特定设置。但是应用程序仍将作为服务器上的单个实例运行。

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

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

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

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

任何建议都会很棒。

非常感谢

1 个答案:

答案 0 :(得分:2)

最简单,最健壮的方法是设置单个IIS站点。我知道你不想这样做,因为它非常耗费时间,并且肯定 难以管理。

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

所以:

  1. 将有关1600个实例的数据转换为可用格式,Sql Server数据库(Express或付费!)可能是理想的。
  2. 调查IIS7 provisioning API s
  3. 组合一个工具,允许您通过IIS7 API自动/批量创建所有关于它们的数据的1600个实例。
  4. 维护工具并将其展开,以便在需要添加或删除实例时进行必要的更改。
  5. 不要忘记将自己的工具放在一起完成这样的任务会给你很大的灵活性,尽管可能有一些工具用于此目的值得调查。为此(即非程序化解决方案),我建议在http://www.serverfault.com

    询问