【发布时间】:2016-12-01 18:51:06
【问题描述】:
我有一个 Topshelf C# 服务,它必须在退出时恢复适配器 DNS 设置。我的停止/启动方法工作得很好,这段代码工作:
ManagementObject.InvokeMethod("SetDNSServerSearchOrder", DNS, null);
但是,即使使用RequestAdditionalTime,关机也是一个问题
我记录了以下错误:
2016-11-30 15:10:53,427 [7] TRACE MyDNSService - DNSService Shutdown command received.
2016-11-30 15:10:53,677 [7] DEBUG MyDNSService - DNSService Error setting DNS: A system shutdown is in progress. (Exception from HRESULT: 0x8007045B)
看来操作系统正在阻止我对ManagementObject.InvokeMethod的调用
我受阻了。有没有办法解决这个问题?在启动时,我的服务检测到异常并恢复,但这需要太长时间。我真的很想能够优雅地关闭。
【问题讨论】:
-
看起来你可以在这里找到答案stackoverflow.com/questions/5217246/…
-
谢谢,不幸的是,这并没有完全涵盖它。服务关闭方法执行良好,由于操作系统关闭而不是服务关闭,是操作系统阻止了我设置 DNS 的调用。
-
如何设置一个标记,当操作系统再次恢复并且您的服务启动时,它应该恢复 DNS。因为当机器关闭时,无论如何都不会重置 DNS。
-
@Gurpreet 这是我目前的解决方法。
标签: c# windows-services topshelf system-shutdown