将IIS配置为两个kestrel服务器的负载均衡器(对于同一网站)

时间:2017-01-25 07:47:29

标签: c# asp.net iis asp.net-core kestrel-http-server

ASP.NET Core无法直接在IIS中运行,因为它需要Kestrel。

这意味着无法像在传统的ASP.NET站点中那样在运行时更新网站,因为在更新期间必须关闭茶隼服务器。

我想在不添加额外的Web服务器和负载均衡器的情况下避免停机。是否可以在IIS中配置ASP.NET Core模块以连接到两个不同的Kestrel服务器?因此,如果其中一个被关闭,所有请求将转到另一个请求?

(我想在磁盘上有两个不同的文件夹:C:\inetpub\wwwroot\mysite_instance1C:\inetpub\wwwroot\mysite_instance2,因此关闭一个文件夹将启用该实例的更新)

如果有可能,我们需要注意哪些因素?例如,是否需要以某种方式配置防伪令牌? (我不使用会话。)

2 个答案:

答案 0 :(得分:1)

我也会对整齐的负载平衡器机制感兴趣,但不知道如何做到这一点。但是,您可以将Web应用程序所针对的目录从目录C:\ inetpub \ wwwroot \ mysite_instance1完美地切换到目录C:\ inetpub \ wwwroot \ mysite_instance2,更新instance1并将其切换回来,它应该完成这项工作。

答案 1 :(得分:0)

由于IIS和AspNetCoreModule的工作方式,目前不支持此功能。

IIS将IHttpContext对象传递给AspNetCoreModule。 AspNetCoreModule使用IHttpContext对象来查询物理应用程序路径。然后,该模块读取在应用程序目录中找到的web.config文件。完成此操作后,模块将在IIS应用程序和dotnet进程之间保持1:1的关系。

raised this as a question并代表您提供了一些其他详细信息。