本来用C#.Net创建好的window服务,在本地运行时正常,然后在别的电脑安装的时候就出现各种问题。我把我一开始安装的时候遇到的问题记录下来。供大家参考和快速解决。
我操作的时候的批处理文件的内容是这样的:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe DoBat.exe
Net Start AutoDoBat
sc config AutoDoBat start= auto
pause
1.第一个错误:“错误1053:服务没有及时响应启动或控制请求”
我执行了批处理的命令,从结果上看安装的时候是成功了,但是也可以看出在启动的时候是失败的,“服务没有响应控制功能”。
这时候我们打开服务管理的控制台尝试手动去启动该服务的时候,就报这个错误了。“错误1053:服务没有及时响应启动或控制请求”。
原因:
因为 .NETFramework版本的问题导致的安装失败。很多C#.Net的开发者都有.NETFramework4.5版本,在VS创建window Service的项目的时候,默认是使用4.5版本的。但是在很多的window 2008的服务器是没有.NETFramework4.5版本的。所以在安装的时候就导致了失败了。
当然报这个“错误1053:服务没有及时响应启动或控制请求”的错误也有别的原因,但是我遇到就是上述的原因。(PS:除此之外,如果服务程序本身报错话也会出现启动失败的可能)
解决:
如果不是一定要用到.NETFramework4.5的,就可以在App.config这里修改下为:
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
或者给服务器安装 .NETFramework 4.5 的版本
2.第二个错误:“指定的服务已经标记为删除”
安装失败也找到原因了那么我就想要把原来的服务给卸载掉才行。然后执行如下命令:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u DoBat.exe
pause
貌似也是卸载成功了,然而并未从服务管理的控制台中移除。如下图:
这时候,既然是删除了,那么我也试下重新安装服务看看,如下图。出现“指定的服务已经标记为删除”的错误,之后怎么删除都不行。
原因:
具体的原因就不知道,可能window的机制的问题,大概是没更新服务状态的感觉。
解决:
关闭服务管理窗口,然后再次打开服务管理窗口的时候就可以看到刚才的那个删除的服务已经不见了。
PS:一般这里在调试window服务的时候如果程序报错了,就需要卸载服务重新调试。
如果在window服务不报错的情况下,正常卸载是不会出现问题,卸载完成之后就会自动的从服务管理器删除掉。