gpt4 book ai didi

c# - 无法调试 Windows 服务

转载 作者:可可西里 更新时间:2023-11-01 10:47:31 27 4
gpt4 key购买 nike

我查看了几篇文章以了解如何调试 Windows 服务。我发现如果我将以下代码放入 OnStart() 函数中:

Debugger.Launch();

可以解决问题,但在我通过 CMD (NET START) 启动我的 Windows 服务后,它只是启动并正常运行,但调试器从未启动,即使 VS 是用加载的 Windows 服务打开的。

我觉得我错过了什么,那是什么?

最佳答案

我通过修改服务的 Main 方法来做到这一点,它在 Program.cs 中,默认情况下它看起来像这样:

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new ServiceMain() };
ServiceBase.Run(ServicesToRun);

然后您可以使用 Environment.UserInteractive找出您的服务是像服务一样启动还是通过调试器启动:

if (!Environment.UserInteractive)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new ServiceMain() };
ServiceBase.Run(ServicesToRun);
}
else
{
ServiceMain sm = new ServiceMain();
Console.Write("Service debug run");
sm.StartForDebugging();
}

当然,您必须在您的服务中添加 StartForDebugging 方法,并执行与在 OnStart 方法中所做的几乎相同的操作,或者您可以直接调用 OnStart 方法,只需将其公开即可。

关于c# - 无法调试 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16917015/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com