我创建了一个 WPF 服务来跟踪用户会话,同时跟踪用户会话我还想跟踪服务崩溃事件。为此,我一直在检查 Windows 事件日志并识别错误。但我很困惑,它在那里显示一个错误,表明无法处理会话更改!是服务崩溃吗??服务崩溃是否有任何特定的异常代码/任何人都可以帮助建议相关文章/点以识别系统崩溃吗?
问问题
152 次
1 回答
3
不是崩溃,您只是看到 .NET 框架的 ServiceBase 类在发挥作用。在少数特定情况下,它会捕获异常并在应用程序事件日志中创建一个条目。In 在其导致 OnStart()、OnStop() 等方法运行的代码中这样做。
看起来服务的 OnSessionChange() 方法失败了,只是一个标准的文件锁定错误。服务代码很可能有点笨拙,它需要在其 Main() 方法中打开该文件,这样其他人就无法搞砸它。可能没有经过很好的测试, OnSessionChange() 不会经常触发。当然没有理由尝试记录任何内容,但谁知道呢。
这不应该以其他方式影响服务流程,如果 OnSessionChange 通知失败,服务控制管理器不会给予太多关注。它对此无能为力。所以你看到这主要是因为你开始寻找,服务确实往往行为不端而没有人注意到。他们这样做并不是很明显。请确保不是您的代码锁定了 Log.txt 文件。如果你这样做了,那么你将不得不使用FileShare.ReadWrite
来防止服务摔倒。
于 2016-03-09T07:30:53.183 回答