首页 > 解决方案 > 如何在 .NET Core 应用程序的 dll 被覆盖时停止关闭?

问题描述

我有一个从我的 NodeJS Web 应用程序调用的 .NET Core 应用程序(这个 .NET Core 应用程序是从 .NET Framework 迁移到在 Linux 服务器上运行以执行一些特定任务)。

到目前为止它工作正常,但是每次我覆盖 .dll 文件(以更新应用程序)时,应用程序的所有运行实例都会自动关闭,没有任何异常或任何东西。好像我会调用 Environment.Exit()。所有正在进行的工作都消失了,调用 NodeJS 服务只收到一个空响应。

我不太明白这样做的必要性,因为 Linux 允许在文件运行时覆盖文件……可能它的工作原理是这样的,以确保在更新 .dll 时重新启动 Web 服务器。但在我的情况下,这种行为是不受欢迎的,我希望有一种方法可以禁用它。试图用谷歌搜索,但找不到任何关于此事的信息。

提前感谢您的任何建议:)

标签: c#.netlinux.net-core

解决方案


我最终编写了某种卷影复制系统。

当我的 NodeJS 应用程序注意到一个新版本的 .NET Core 应用程序上传到服务器时,它会将具有当前版本(“活动”)的文件夹重命名为“旧”+时间戳之类的内容,然后将新版本重命名为“活动” . 在此重命名过程发生时,它会阻止任何启动应用程序的尝试。

这种方法有助于彻底解决问题。


推荐阅读