【问题标题】:Windows can't start serviceWindows 无法启动服务
【发布时间】:2012-07-11 20:26:22
【问题描述】:

我正在开发一个应用程序以作为 Windows 服务安装和运行。它仍然有问题并且意外停止(在 Windows 事件日志中也没有留下任何内容),当我尝试再次启动它时,我得到了错误

Windows 无法在本地计算机上启动 {name of service} 服务。 错误 1067:进程意外终止。

我重新启动了计算机(Server 2008 R2;一个虚拟机,以防有什么不同),没有任何帮助。卸载并重新安装了我的服务,但仍然出现该错误!

机器上的某些东西需要清除/刷新,以便它会尝试再次启动服务。我不想重建整个虚拟机,但我没有想法。

更新

我忘了提到这个 Windows 服务 -- 完全相同的代码和安装 -- 在其他 3 台机器上运行 没有 上述错误。不过,在 OnStart() 中放入调试器听起来还是不错的选择。

【问题讨论】:

  • 通常这是由于未处理的异常。
  • 这意味着您的代码中有一些错误。检查事件日志以查看它为您提供的信息。还可以尝试添加一个日志机制,这样你就可以知道出了什么问题
  • 您的服务是否访问网络驱动器?
  • 不幸的是,事件日志中没有显示任何内容,如果服务完全启动,它必须在有机会写入其日志文件之前失败。是的,它确实访问了一些 DFS 路径。
  • @EastofNowhere,如果您提供代码,主要是在 Startup 上,我们可以对其进行审核,并可能会看到可疑代码。

标签: c# windows-services


【解决方案1】:

如果您可以访问代码,您可以在OnStart 方法的第一行添加一个方法Debugger.Break

一旦您“闯入”应用程序,请调查引发异常的位置。

【讨论】:

  • 我已将 Debugger.Break() 放在 OnStart() 的第一行,但它没有被击中 :(
  • @Hari 您能否再次检查您的应用程序是否使用 Debug 配置(而不是 Release)编译?
  • @oleksii 是的,我已经在调试模式下编译了应用程序。我解决了这个问题。我在 Visual Studio 中使用“设置和部署”来托管服务,但它没有正确托管服务(我也无法启动服务)。后来当我使用 installutil.exe 安装服务时,一切都很顺利并且调试点被命中。无论如何感谢您的回复。
【解决方案2】:

您可以将调试器附加到正在运行的服务。详情Debug Windows Service Applications

很幸运,您可以轻松地复制问题。您可以安装带有代码的 .NET Studio 来调试您的问题。

另一种技术是将服务变成常规应用程序。您知道可疑代码在启动期间。因此,只需在 Startup 函数中使用代码创建应用程序,然后从那里开始调试。

祝你好运,

汤米·奎

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多