我有一个使用ASP.net核心MVC2的新建站点。
以前我使用的是MVC5--当我需要用FTP上传站点更新时,我可以直接在旧的mysite.dll上上传新的up。
现在我不能这样做了--我猜是因为文件被锁定了。我能想到的唯一解决方法是停止IIS站点,上载,然后重新启动它。
我怎么才能用FTP上传新的dll,就像MVC5站点一样?为什么这在以前是不可能的呢?( MVC 5文件不也是锁定的吗?)
或者,有没有另一种不需要停止网站的快速方法?
我找到了这个--还没解决吗?https://github.com/aspnet/IISIntegration/issues/226
谢谢。
发布于 2018-04-16 08:03:32
我不能完全确定,但我认为主要的障碍在于ASP.NET核心与IIS集成的实际设计。ASP.NET站点实际上在IIS宿主进程中作为托管代码运行,而ASP.NET核心站点在单独的非托管进程中运行,而IIS充当反向代理。
这意味着,使用ASP.NET,实际的DLL基本上可以是热插拔的,但是使用ASP.NET核心站点,应用程序DLL本身是在Kestrel进程中运行的。因此,我看不到这一点的实际变化,与其说这是一个"bug“,不如说是现在的工作方式。
也就是说,ASP.NET核心是一个现代应用程序框架,主要设计时考虑到了现代应用程序的部署。当使用容器化、负载平衡等时,这根本不是问题。事实上,这只是文件系统部署的问题,坦率地说,这可能是部署应用程序的所有可能方式中最糟糕的方式。
我的建议是:使用更好的部署策略。如果不可能,则发布到其他目录并热插拔IIS中的站点根目录。如果这也是不可能的,那么你将不得不首先停止你的网站并接受它。
https://stackoverflow.com/questions/49846548
复制相似问题