我建立了一个Windows服务,当我在Visual Studio中运行它时,它运行良好。我还为该服务创建了一个安装程序。除了启动服务本身以外,其他一切都正常。它立即关闭,告诉我它已经停止了。
我该如何调试?我认为我正在使用的参考文件或附加的DLL可能存在一些问题,但我找不到调试我的服务的方法。
WinDbg预览处于启用状态,但是它只能调试正在运行的服务,而我没有。
有什么想法吗?
答案 0 :(得分:1)
在服务的System.Diagnostics.Debugger.Launch()
函数,构造函数或Main()
回调中放置对OnStart()
的调用。从服务控制管理器(SCM)启动服务时,将显示一个对话框,允许您启动Visual Studio的新实例或附加到现有实例。选择所需的实例(我通常选择现有实例),该服务应在您的编程断点处停止。您可以从那里调试。
如果程序断点未命中,则意味着两件事之一。首先,这可能意味着Windows服务无法正确启动,因为它找不到必要的.dll文件。在这种情况下,请确保Windows服务与所需的.dll文件位于同一目录中,并且/或者确保必需的.dll文件位于库路径中。另一个问题可能是您在系统上没有调试服务所需的权限(例如,您是系统上的本地管理员吗?)。与系统管理员一起确定所需的权限,确保您的帐户具有这些权限,重新启动系统,然后重试。
HTH