.NET Windows服务仅适用于调试二进制文件

时间:2012-10-12 12:50:55

标签: .net service

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

2 个答案:

答案 0 :(得分:1)

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

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

编辑: 只是为了报复。我调试的复杂企业服务代码中99%的服务问题已经使用这种模式解决了。其余的@LexLi正确的安全问题不能通过将应用程序作为控制台应用程序来解决总是

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

  1. 迭代地降低系统(环境)的复杂性
  2. 迭代删除代码(测试中)复杂性
  3. 重复直到问题再现,然后应用源代码或运行时调试程序,无论是自定义还是自定义。

答案 1 :(得分:0)

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

  1. 在发布版本中编译项目。
  2. 使用InstallUtil将Release版本二进制文件安装为Windows服务。 http://msdn.microsoft.com/en-us/library/sd8zc8ha(v=vs.80).aspx
  3. 尝试启动此服务,看看是否出现相同的错误消息。

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

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

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

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