ASP.NET Core无法直接在IIS中运行,因为它需要Kestrel。
这意味着无法像在传统的ASP.NET站点中那样在运行时更新网站,因为在更新期间必须关闭茶隼服务器。
我想在不添加额外的Web服务器和负载均衡器的情况下避免停机。是否可以在IIS中配置ASP.NET Core模块以连接到两个不同的Kestrel服务器?因此,如果其中一个被关闭,所有请求将转到另一个请求?
(我想在磁盘上有两个不同的文件夹:C:\inetpub\wwwroot\mysite_instance1
和C:\inetpub\wwwroot\mysite_instance2
,因此关闭一个文件夹将启用该实例的更新)
如果有可能,我们需要注意哪些因素?例如,是否需要以某种方式配置防伪令牌? (我不使用会话。)
答案 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并代表您提供了一些其他详细信息。