我创建了一个应用程序作为Windows服务,它可以在运行Windows 8 x64的工作站上正常工作,并在OnStart()上的应用程序事件日志中写入多个事件。我使用InstallUtil将它安装在Windows 2012计算机上,并在启动后立即停止。我在事件日志中唯一看到的是System:
The Foo service entered the stopped state.
编辑1:为什么你甚至不留下一个关于它为什么不好的评论的问题呢?
答案 0 :(得分:1)
我在调试Windows服务时学到的很多东西可能会帮助您解决问题。
通过向appdomain添加事件处理程序,尝试在服务退出之前捕获UnhandledException。我有我的Log函数写入文本文件。
AddHandler AppDomain.CurrentDomain.UnhandledException,AddressOf CurrentDomain_UnhandledException
Public Sub CurrentDomain_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs)
'Log and output exception message before the application exits.
Dim exp = DirectCast(e.ExceptionObject, Exception)
Dim formatexp = String.Format("Exception: {0}; Message: {1}: InnerException: {2}",
exp.ToString(),
exp.Message.ToString(),
exp.InnerException.ToString())
Log(formatexp)
Console.WriteLine(formatexp)
Log("Application exited due to unhandled exception")
Console.WriteLine("Service exited due to unhandled exception")
'Exit the batch process gracefully.
Environment.Exit(-1)
End Sub
尝试使用WindDbg调试Windows服务崩溃或挂起问题,您可以从Microsoft Download site下载。
检查尝试访问服务器上任何资源的服务帐户是否可以访问它们。
如果您想查看代码的实时执行,请将执行记录到SignalR主机。这可能是矫枉过正,但我曾经有多个线程执行不同的进程,我能够使用SignalR调试问题。
注意:如果您可以发布一些示例代码,那么对我们帮助您将有所帮助。