【问题标题】:Two instances of the same Website on IIS with different web.config (two different databases)IIS 上具有不同 web.config 的同一网站的两个实例(两个不同的数据库)
【发布时间】:2014-05-17 04:00:48
【问题描述】:

我想在 IIS 上实现同一网站 (www.example.com) 的某种配置,我希望有两个实例和两个应用程序池,因此一个实例位于:

c:\Site1

第二个位于

c:\Site2

两个站点都是 100% 相等的,唯一的例外是数据库连接字符串,每个站点都指向不同的数据库服务器。

因此在 DNS 中将指向 www.example.com,而在 IIS 中每个实例将指向 www.example.com

我这样做是因为我需要每天使用新信息恢复数据库,所以在我当前的情况下,我必须停止应用程序,恢复数据库,然后重新启动应用程序,这样每次我这样做时网站都会脱机.

所以我想这样做,这样我就可以停止 Site1,然后恢复数据库,然后重新启动站点并对 Site2

执行相同的操作

【问题讨论】:

    标签: asp.net iis load-balancing multiple-instances


    【解决方案1】:

    您可以拥有两个数据库,而不是复制网站,例如DB1 和 DB2。

    如果 DB1 处于活动状态(在 web.config 中配置),则恢复到 DB2。然后,更新 web.config 以指向 DB2。当前活动的请求将使用旧配置(指向 DB1)完成,但所有新请求将使用新配置(指向 DB2)。

    更新

    根据您的高昂启动成本,您可以改为将两个网站创建为 www1.example.com 和 www2.example.com,并将第三个网站设置为 www.example.com,根据情况将其重定向到 www1 或 www2哪一个准备好了。您可以在 IIS 中配置重定向,无需 html 或 ASP.Net 页面即可完成重定向。

    【讨论】:

    • 这样做的问题是我的网站需要一段时间才能加载,因为它必须在启动之前读取一些表并执行一些缓存任务。
    • 不幸的是,我的网站是 SEO,所以如果我添加 www1 和 www2,seo 会杀了我,因为 google 爬虫会认为我有两个不同的网站。
    • 你为什么不在代码中处理它,在网络应用程序的数据访问层中构建一些智能,可以从“其他”数据库(刚刚恢复的那个)重建缓存,以及然后在重建完成后,使用更新后的缓存来处理 Web 请求。需要更改代码,但比其他选项更干净,例如每次更新数据库时更改网站绑定(也是一个选项,但不确定如何自动化)。
    • 问题在于,每次编辑 web.config 时,应用程序都会重新启动,因此会调用缓存重建。
    • 不要使用 web.config 切换活动数据库。有 2 个连接字符串,并使用另一种机制来设置活动的字符串(例如,带有文件观察器的额外文件,或应用程序中的管理页面)。
    猜你喜欢
    • 1970-01-01
    • 2019-03-30
    • 2017-12-08
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2014-11-23
    • 2021-07-11
    • 2018-11-04
    相关资源
    最近更新 更多