【问题标题】:System event notifications are not supported under the current context当前上下文不支持系统事件通知
【发布时间】:2026-01-30 00:10:01
【问题描述】:

在 IIS 中托管的 WCF 服务中绑定到 SystemEvents.PowerModeChanged 时出现此错误:

“当前上下文不支持系统事件通知。例如,服务器进程可能不支持全局系统事件通知。”

   at Microsoft.Win32.SystemEvents.EnsureSystemEvents(Boolean requireHandle, Boolean throwOnRefusal)
   at Microsoft.Win32.SystemEvents.add_PowerModeChanged(PowerModeChangedEventHandler value)

在网上寻找一些解决方案,但找不到任何解决方案。我假设这是与 IIS 托管相关的问题,因为该服务与操作系统有一些分离层?

我可以绑定任何其他事件来指示系统“暂停”和“恢复”状态吗?

【问题讨论】:

  • 错误信息似乎很清楚,而且切中要害。那么这里的实际问题是什么?
  • 有没有办法可以绑定到 WCF 服务中的系统睡眠和恢复事件(可能不是 PowerModeChanged,可能是其他事件)?

标签: c# wcf iis systemevent


【解决方案1】:

我猜你的异常信息是不言自明的。此处不支持全局系统事件通知。

我不知道您为什么要在 IIS 中执行此操作。但如您所愿,我建议您写一个windows service 并使用Named Pipes, MSMQ 之类的东西与它通信以获取此类事件。

【讨论】:

  • 好建议,我希望我可以绑定另一个指示“暂停”和“恢复”状态的事件。
  • @vapen 我想这是你唯一的选择。如果它解决了您的问题,您可以随时将其标记为已接受。