部署ASP.net Core MVC 2 - 无法覆盖mysite.dll

时间:2018-04-15 20:37:00

标签: asp.net-core-mvc asp.net-core-mvc-2.0

我有一个使用ASP.net Core MVC 2的绿地网站。

以前我使用过MVC 5 - 当我需要FTP更新站点更新时,我可以上传旧的mysite.dll。

现在我无法做到这一点 - 我猜是因为文件被锁定了。我能想到的唯一解决方法是停止IIS站点,上传,然后重新启动它。

我怎样才能像使用MVC 5网站一样刷新dll?为什么现在不可能 - 以前什么时候? (不是MVC 5文件也没有锁定?)。

还是有另一种快速的方法可以做到这一点,不涉及停止网站吗?

我发现了 - 没有解决方案吗? https://github.com/aspnet/IISIntegration/issues/226

感谢。

1 个答案:

答案 0 :(得分:0)

我不完全确定,但我认为主要的做法仅仅是ASP.NET Core与IIS集成的实际设计。 ASP.NET站点实际上在IIS主机进程中作为托管代码运行,而ASP.NET核心站点在单独的非托管进程中运行,而IIS用作反向代理。

这样做的含义是,使用ASP.NET,实际的DLL可能基本上是热交换的,但是对于ASP.NET核心站点,应用程序DLL本身就运行在Kestrel进程中。因此,我并没有看到这实际上发生了变化,而且这并不是一个错误""就像现在的工作方式一样。

也就是说,ASP.NET Core是一个现代的应用程序框架,主要是考虑到现代应用程序部署而设计的。这在使用容器化,负载平衡等时根本不会成为问题。事实上,它只是文件系统部署的一个问题,坦率地说,这可能是部署所有可能应用程序的最糟糕方式方式。

我的建议:使用更好的部署策略。如果不可能,则发布到其他目录并热插拔IIS中的站点根目录。如果这也不可能,那么您只需要先阻止您的网站并使用它。