
[英]WEB service C# - Cannot start service from the command line or debugger
[英]C# Windows service won't start: “Cannot start service from command line or debugger”
即使有类似的问题,我也找不到解决我问题的方法。 我有一个作为服务运行的简单程序,我想以编程方式启动它。 就这么简单:
private static void StartService()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyService()
};
ServiceBase.Run(ServicesToRun);
}
不出所料,我不能不安装就启动我的服务。 Windows给我以下错误消息:
无法从命令行或调试器启动服务。 必须先使用installutil.exe安装Windows服务,然后再使用服务浏览器,Windows服务管理工具或NET启动来启动Windows服务。
到现在为止还挺好。 所以我去了那里,就像文档所说的那样:
installutil <my_project>.exe
安装成功,我什至可以从Service Manager或net start
服务。 唯一的问题是:当我调试应用程序(通过F5)时,Windows始终向我显示完全相同的消息: Cannot start service (...)
。
我在这里找到了使用此方法的解决方案:
public void onDebug()
{
OnStart(null);
}
这使我可以正常运行和调试应用程序,但实际上我需要将其作为服务运行,而Windows拒绝以这种方式启动。 有什么我想念的吗?
像正常程序一样启动服务不是您的权力。 服务必须在服务管理员中注册并由其启动。 这是Windows服务的(许多)规则之一。 而且您必须为每个新版本重复该操作。
由于此规则和其他与服务相关的规则(没有交互式会话)会使他们感到痛苦,因此一种常见的方法是使用控制台应用程序进行开发。 我找不到理想的示例,但发现了类似的内容: https : //alastaircrabtree.com/how-to-run-a-dotnet-windows-service-as-a-console-app/
当然,更好的长期计划可能是停止一起使用服务,然后切换到Windows Task Scheduler。 这在很大程度上取决于您实际上需要什么代码才能在实践中完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.