有没有办法“热发布”.NET核心应用程序?
我正在寻找将一些.NET Core应用程序迁移到生产环境中,并且使用旧的.NET框架,您可以随时更新应用程序代码的已编译DLL。有没有办法“热发布”.NET核心应用程序?
下一次的应用程序池回收,你会得到你的新代码 - 或者你可以手动回收应用程序池。
在.NET的核心,似乎正在运行的应用程序锁定的DLL,它不能被覆盖,直到该过程是通过关闭不活动,或通过任务管理器(这里Window的服务器)结束。
是在发布一个新版本,而不必设置维护窗口为所有用户提供最佳方法是什么?这是通过IIS 8运行.NET Core框架的Windows 2012 R2服务器和不具有托管代码的应用程序池。
对于ASP.NET核心与Kestrel的托管运行在单独的进程和IIS的工作原理是反向代理。因此,除非您将应用程序实现为DLL,否则无法发布DLL。
Set up a hosting environment for ASP.NET Core on Windows with IIS, and deploy to it部分部署应用程序,项目4
如果你想避免停机时间IIS设置简单的两个网站与同组的设置,使得在第二个网站的更新,先放了下来,并开始第二。
我试过这个,并排放置两个目录,然后改变路径到新的目录。这两种方法关闭所有当前线程并启动一个新进程,为所有当前请求抛出500个错误,因此不是理想的解决方案。我提出的最好的方法是在安静的时候,开始复制,等到它锁定,然后回收应用程序池并继续复制 - 如果我熟练使用鼠标和手指,它通常会及时复制。 – RemarkLima
FYI:ASP.NET核心+ IIS是这样处理模块:https://github.com/aspnet/AspNetCoreModule。这可能是他们可以添加的一个很酷的功能。 – natemcmaster