0

我已经安装了一个用 c# 开发的 Windows 服务。该服务已由 Visual Studio 安装程序项目创建的 msi 包安装。当使用来自发布版本的二进制文件安装服务时,它无法启动,并且服务控制台返回以下错误消息:“错误 1053:服务未及时响应启动或控制请求”。当服务与调试二进制文件一起安装时,一切都按预期工作。我已经为服务的构造函数、OnStart 方法、main 方法和服务的主工作线程的 DoWork 方法中发生的每个异常添加了日志。服务的 OnStart 方法几乎立即退出,因为它只是从配置文件中初始化一些变量,然后启动主工作线程。我没有在事件查看器上记录任何异常。我一无所知,我怎么能调试发布二进制文件发生了什么?谢谢。

4

2 回答 2

1

我会更改代码以使服务能够从独立的控制台测试工具运行。毕竟,服务只是管理启动关闭和暂停/恢复的一种奇特方式。然后在服务之外调试您的代码。

如果失败,则将代码分解为多个程序集,看看是否可以更精确地隔离代码模块。然后尝试通过将进入条件记录到受影响的模块来重新创建问题,并在控制台测试工具中重新创建它们

编辑:只是插话。我调试过的复杂企业服务代码中 99% 的服务问题都已使用此模式解决。@LexLi 正确的其他安全问题并不总是通过将应用程序作为控制台应用程序运行来解决。

此外,我对所有调试问题的回答通常是这种模式:

  1. 迭代地降低系统(环境)复杂性
  2. 迭代地移除代码(测试中)的复杂性
  3. 重复直到问题被重现,然后应用源代码或运行时调试器,无论是自定义的还是关闭的。
于 2012-10-12T12:56:02.240 回答
0

您可以尝试从进程中删除 MSI,以便更好地确定根本原因。

  1. 在发布版本中编译您的项目。
  2. 使用 InstallUtil 将 Release 构建二进制文件安装为 Windows 服务。http://msdn.microsoft.com/en-us/library/sd8zc8ha(v=vs.80).aspx

尝试启动此服务并查看是否出现相同的错误消息。

如果服务仍然无法启动,请尝试按照KB设置服务调试,

http://support.microsoft.com/kb/824344

由于这是一个 .NET Windows 服务,您可能会了解 WinDbg 和 SOS,

http://www.netfxharmonics.com/2009/01/Learning-WinDBGSOS-and-Advanced-Debugging

于 2012-10-12T13:25:56.210 回答