我尝试使用ServiceProcess.ServiceBase调试Windows服务,而不是在本地安装服务。我的项目中有一个小控制台应用程序,使用类似的方法
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyProcessorService()
};
ServiceBase.Run(ServicesToRun);
}
这个项目是解决方案的一部分,所以我将这个项目设置为启动,设置一些断点并点击F5,但我仍然得到关于无法调试服务的消息......“不能从命令行或调试器启动服务.... “
我错过了什么?
答案 0 :(得分:1)
您无法在交互式上下文中启动服务(除非服务用户有权这样做)。
if (Environment.UserInteractive)
{
//Instantiate service object and call a method to start the service manually here...
}
else
{
//Normal ServiceBase.Run goes here....
}
ServiceBase
派生类上的手动启动方法通常类似于:
internal void TestStartupAndStop(string[] args)
{
this.OnStart(args);
Console.ReadLine();
this.OnStop();
}