我有一个使用ASP.net Core MVC 2的绿地网站。
以前我使用过MVC 5 - 当我需要FTP更新站点更新时,我可以上传旧的mysite.dll。
现在我无法做到这一点 - 我猜是因为文件被锁定了。我能想到的唯一解决方法是停止IIS站点,上传,然后重新启动它。
我怎样才能像使用MVC 5网站一样刷新dll?为什么现在不可能 - 以前什么时候? (不是MVC 5文件也没有锁定?)。
还是有另一种快速的方法可以做到这一点,不涉及停止网站吗?
我发现了 - 没有解决方案吗? https://github.com/aspnet/IISIntegration/issues/226
感谢。
答案 0 :(得分:0)
我不完全确定,但我认为主要的做法仅仅是ASP.NET Core与IIS集成的实际设计。 ASP.NET站点实际上在IIS主机进程中作为托管代码运行,而ASP.NET核心站点在单独的非托管进程中运行,而IIS用作反向代理。
这样做的含义是,使用ASP.NET,实际的DLL可能基本上是热交换的,但是对于ASP.NET核心站点,应用程序DLL本身就运行在Kestrel进程中。因此,我并没有看到这实际上发生了变化,而且这并不是一个错误""就像现在的工作方式一样。
也就是说,ASP.NET Core是一个现代的应用程序框架,主要是考虑到现代应用程序部署而设计的。这在使用容器化,负载平衡等时根本不会成为问题。事实上,它只是文件系统部署的一个问题,坦率地说,这可能是部署所有可能应用程序的最糟糕方式方式。
我的建议:使用更好的部署策略。如果不可能,则发布到其他目录并热插拔IIS中的站点根目录。如果这也不可能,那么您只需要先阻止您的网站并使用它。