【发布时间】:2017-08-28 19:12:56
【问题描述】:
我想编写一个 Linux 服务(如 Windows 服务),但我不知道如何安全地停止该服务。
我读到了
AssemblyLoadContext.Default.Unloading += MethodInvokedOnSigTerm;
但它在 .NET Core 1.1 上不存在。
你有什么想法吗?
【问题讨论】:
标签: c# .net linux service .net-core
我想编写一个 Linux 服务(如 Windows 服务),但我不知道如何安全地停止该服务。
我读到了
AssemblyLoadContext.Default.Unloading += MethodInvokedOnSigTerm;
但它在 .NET Core 1.1 上不存在。
你有什么想法吗?
【问题讨论】:
标签: c# .net linux service .net-core
如果您能够更新您的应用以使用.Net Core 1.2,则可以通过AppDomain.ProcessExit 事件完成,但在.Net Core 1.1 中这是不可能的,根据this github issue。
请注意,您至少需要引用 Microsoft.NETCore.App 1.2.0-beta 才能使用较新的 API。此外,要引用较新的版本,您需要拥有一组较新的 CLI 工具至少预览 4 版本的工具。您可能会发现新的 API 功能可用性here。
根据该网站,System.Runtime.Loader.AssemblyLoadContext.Unloading 事件确实存在自 .NET Core 1.0 在 System.Runtime.Loader, Version=4.0.0.0, PublicKeyToken=b03f5f7f11d50a3a 中。您是否尝试安装该软件包?我认为它会解决您的问题。
using System.Runtime.Loader;
AssemblyLoadContext.Default.Unloading += MethodInvokedOnSigTerm;
【讨论】: