代码之家  ›  专栏  ›  技术社区  ›  galets

正在检索.NET服务在OnStop中停止的原因信息

  •  0
  • galets  · 技术社区  · 16 年前

    我有一个.NET服务,基于 ServiceBase :

    public partial class Service : ServiceBase
    

    此服务上的某些启动停止。服务停止期间记录的内容与使用SCM的定期停止一致,但用户声明他没有启动它。我不确定这是某种崩溃还是用户错误。

    自从 OnStop 方法正在被调用,我想记录一些诊断信息,以查看导致停止的原因。在那一点上有可能得到这个信息吗?我在看:启动stop的用户是什么,从哪个工作站/IP地址启动的,诸如此类的东西。有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   kragan    16 年前

    在运行服务的计算机上的系统事件日志中,应该有一个事件,用于服务关闭的时间。事件的详细信息将列出启动停止请求的用户。

    您可以通过代码访问事件日志,但是我不确定是否可以捕获与在其onstop方法中关闭服务相关的事件信息。这里有一些代码,如果你想尝试的话,你可以适应你的情况。-

           foreach (EventLog logs in System.Diagnostics.EventLog.GetEventLogs())
           {
                if (logs.LogDisplayName.ToUpper() == "SYSTEM")
                {
                    foreach (EventLogEntry logEntry in logs.Entries)
                    {
                        if(logEntry.TimeGenerated >= DateTime.Now.AddMinutes(-2))
                        {
                            Console.WriteLine("User: {0} Message: {1}", logEntry.UserName, logEntry.Message);
                        }
                    }
                }
            }
    
        2
  •  0
  •   Community Mohan Dere    8 年前

    问题是:在一个类的析构函数中引发了异常。显然,不可能拦截这样的事件。感谢大家在这个问题上花时间。

    This thread 可以对析构函数问题有所了解

    推荐文章