无法使用ServiceBase启动调试会话

时间:2016-02-11 13:53:24

标签: c# visual-studio service

我尝试使用ServiceProcess.ServiceBase调试Windows服务,而不是在本地安装服务。我的项目中有一个小控制台应用程序,使用类似的方法

static void Main()
{
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] 
    { 
        new MyProcessorService() 
    };
    ServiceBase.Run(ServicesToRun);
}

这个项目是解决方案的一部分,所以我将这个项目设置为启动,设置一些断点并点击F5,但我仍然得到关于无法调试服务的消息......“不能从命令行或调试器启动服务....

我错过了什么?

1 个答案:

答案 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();
 }