[英]Windows service performs differently after reboot
我可能会低估Windows服务的行为或生活本身。
问题:
该服务异常停止,尽管已设置,但未执行任何恢复操作。 服务调用ServiceHelper .ChangeStartMode方法后停止
try
{
normalnekurwalogowanie(Constants.Values.service_name);
ServiceController svc = new ServiceController(Constants.Values.service_name);
if (svc != null)
{
ServiceHelper.ChangeStartMode(svc, (automatic ? ServiceStartMode.Automatic : ServiceStartMode.Manual));
svc.Close();
}
else
normalnekurwalogowanie("null");
}
catch (Exception ex)
{
//Logger.Instance.Error("Error message: {0}\nError Stack Trace: {1}", new object[] { ex.Message, ex.StackTrace });
normalnekurwalogowanie(ex.ToString());
}
在我的日志文件中,有一个错误Open Service Manager Error
: Unable to open Service Manager
现在,有几个有趣的事实:-如您所见,捕获了异常并将其打印到文件中,但服务已停止-仅在重新启动后才发生错误; 服务安装后,在系统重新启动之前不会发生
解决方案:
删除对外部Logger
类的引用(不是我写的,没有代码)后,问题消失了。 我不知道为什么
问题:
即使外部类可能对我的代码产生影响,也不会在引发异常的行之前的任何地方调用它。 顺便说一句,在winforms应用程序中使用的externall类工作正常,在重新启动之前可以正常使用。
我将尝试获取外部类代码并更新问题。
如何捕获异常仍会使服务崩溃(并以某种方式不执行恢复操作)?
原始异常可能不会使服务崩溃,但是如果您的第一个异常处理程序中有第二个异常,则服务将崩溃。 我会检查Logger.Instance.Error()
是否通过在其周围放置try / catch引发异常。
重新启动后代码如何表现不同? 它通过完全相同的顺序。
尽管代码中的序列可能相同,但是我们不知道在上次崩溃之前磁盘上还剩下什么残留状态。 这可能是造成差异的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.