windows服务启动 1053错误

1.问题描述

今天在启动一个Windows服务时,服务启动不了,且提示:1053错误

那么是什么导致了1053错误呢?

 

2.他山之石

百度了一下,发现有人作出下面的解释并给出了解决方法:

“常常是因为缺少了一些服务必需的dll。解决办法如下,你找到这个服务程序所在的目录,如D:\services\,双击这个服务程序,会弹出一个提示框,提示服务运行缺少某个dll,然后你可以在别的地方找到这个dll,放到和本服务相同的目录下或者是C:\windows\system32目录下。这个问题就能解决了。”

 

3.实际解决

于是根据他的思路,我双击了服务程序。结果出现了如下的提示框:

看来程序崩溃了,那么如何找出问题的原因所在呢?

对,调试程序!

我选择了【调试程序】,于是启动了VS进行调试。VS打开后抛出了一个异常,界面如下:

于是心中窃喜,因为从异常信息中我们往往能找出异常所在的准确位置(StackTrace的使用)。而且从上图的异常消息上,我们知道大体可能是配置文件的问题。

 

于是,“查看详细信息...”,从StackTrace中我们没有找到有用的信息,但是在InnerException的Message中有了发现:

错误信息:“在 machine.config 之外使用注册为 allowExeDefinition='MachineOnly' 的节是错误的。...”

从中我们甚至能找到配置文件的名字:WindowService.exe.Config和错误所在的行号:20。

 

依据上面找到的信息,我们去查看一下配置文件的20行到底怎么了:

原来在20行,设置了一个<machineSettings maxTimeout="00:30:00" />,而事务的maxTimeout只能在machine.config中进行设置,而不是应用程序配置文件。

所以我们的处理办法就是将其注释掉。

至此,我们解决了服务不能启动,提示1053错误的问题。

 

总结:

  这里的配置文件错误只是1053错误的一种原因。从这次的经历中我们主要学到的是如何排查Windows服务启动不了的原因。

 

参考:http://blog.csdn.net/haojiahuo50401/article/details/7170732

《System.Transactions 事务超时属性》

http://www.soaspx.com/dotnet/csharp/csharp_20121009_9673.html

转载于:https://www.cnblogs.com/Leon-LYH/p/4091533.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值