如何调试.NET Windows服务OnStart方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我使用.NET编写的代码只有在安装为Windows服务时才会失败。失败不允许服务甚至启动。我无法弄清楚如何进入OnStart方法。

如何:调试Windows服务应用程序提供了一个诱人的线索:

附加到服务的进程允许您调试大部分但不是全部的服务代码; 例如,因为服务已经启动,所以不能以这种方式调试服务的OnStart方法中的代码,或者用于加载服务的Main方法中的代码。解决此问题的一种方法是在服务应用程序中创建临时性的第二项服务,该服务仅用于帮助进行调试。您可以安装这两个服务,然后启动这个“虚拟”服务来加载服务进程。一旦临时服务启动了该进程,就可以使用Visual Studio中的调试菜单附加到服务进程。

但是,我不清楚你应该如何创建虚拟服务来加载服务进程。

提问于
用户回答回答于

作为临时解决方法,可以做的一件事是启动调试器作为OnStart中的第一行代码

System.Diagnostics.Debugger.Launch()

这会提示你输入你想要使用的调试器。只需要在Visual Studio中打开解决方案,然后从列表中选择该实例即可。

用户回答回答于

我倾向于添加一个像这样的方法:

    [Conditional("DEBUG")]
    private void AttachDebugger()
    {
        Debugger.Break();
    }

它只会在你的项目的调试版本上调用,它会暂停执行并允许你附加调试器。

扫码关注云+社区