我创建了一个Windows服务,每2分钟向用户发送一次电子邮件通知(从db检索到的列表)。我希望检查Web服务中的所有内容是否正常运行,因此我希望调试该服务。当完成应用程序的服务器设置时,该服务安装在SMC(services.msc)中。
我的问题:如何调试Windows服务?
我无法从
查看服务我试过以下链接
Debugging windows services(无法理解第一个评论 - 正常的窗口形式)
如果需要任何输入,请告诉我。
谢谢!
编辑: @maycil
我写了你的If(!Debug)
代码,但我觉得有些问题,因为我看不到Visual Studio的正确颜色。
答案 0 :(得分:2)
static void Main()
{
#if (!DEBUG)
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new Service1Component() };
ServiceBase.Run(ServicesToRun);
#else
Service1Component s = new Service1Component();
s.StartProcess();
#endif
}
在Service1Companent.cs中尝试此代码
答案 1 :(得分:2)
根据maycil的回答,您可以使用Environment.UserInteractive检查服务是否在附加控制台的情况下运行。这样,它既可以作为服务,也可以作为控制台应用程序进行调试。
static void Main( string[] args )
{
if( !Environment.UserInteractive )
{
var servicesToRun = new ServiceBase[] {new Service1Component()};
ServiceBase.Run( servicesToRun );
}
else
{
var services = new Service1Component();
services.Start()
Console.WriteLine( "Press return to exit" );
Console.ReadLine();
services.Stop();
}
}