用.net写的windows服务无法自动启动。
2013-01-18 10:32
405 查看
用.net写的windows服务无法自动启动。
可以先看日志中的描述进行判断问题。随windows自动启动时总是启动不了,windows日志中有两个错误,描述是:
1:等待 MyService 服务的连接超时(30000 毫秒)。
2:由于下列错误,MyService 服务启动失败: 服务没有及时响应启动或控制请求。
等windows启动后用手工启动服务时一切正常。
我估计是在windows启动时,系统分配给这个服务的资源比较少,所以这个服务占用了较多时间,导致超出30000毫秒后被windows看作启动失败。而windows启动后,手动启动服务时资源充足,所以启动成功了。
问题已解决。
在问题机器的注册表以下位置增加一个项,值设为60000。
Subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Name: ServicesPipeTimeout
Type: REG_DWORD
Data: 60000
参考:http://support.microsoft.com/kb/884495
内容:若要解决此问题,服务启动过程的超时值的增加。当您增加这个值时,Microsoft ISA 服务器存储服务有更多的时间来加载在计算机启动时。若要增加服务启动时间,创建以下注册表项:
子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
名称: ServicesPipeTimeout
类型: REG_DWORD
数据: The number of milliseconds that you want to give the services to start in
35,000 数据值通常足以防止超时的服务。但是,您可以减少或增加此值根据您的特定启动要求。例如对于将超时值为 60 秒内将数据值为 60,000 分配给 ServicesPipeTimeout 注册表项。较大的数据值不会降低计算机的性能。若要进行该注册表项,请按照下列步骤操作:
单击 开始、 单击 运行,键入 regedit,然后单击
确定。
找到并单击以下注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
用鼠标右键单击 控件,指向 新建,然后再单击 DWORD 值。
在 新值 # 1 框中键入 ServicesPipeTimeout,然后按 ENTER 键。
用鼠标右键单击 ServicesPipeTimeout,然后单击 修改。
单击 十进制,键入所需服务超时之前等待的毫秒数,然后单击 确定。
例如对于等待 60 超时之前等待的时间 (秒),服务,键入 60000。
退出注册表编辑器,然后重新启动计算机。
相关文章推荐
- 用.net写的windows服务无法自动启动。
- .Net Windows服务安装完成后自动启动
- C# 自动程序 windows 无法启动 XXXX 服务 错误5 拒绝访问
- windows操作系统启动后SDE的服务无法自动启动的解决方法
- .Net实现Windows服务安装完成后自动启动介绍
- windows服务无法自动启动(转)
- ElasticSearch集群未连接 无法发现节点(windows环境)以及windows环境下设置服务 不能自动启动的问题
- .Net实现Windows服务安装完成后自动启动的两种方法
- 【svn】Windows开机自动启动SVN服务设置
- Windows 平台下安装Cygwin后,sshd服务无法启动
- windows 服务自动启动
- windows无法启动MySQL服务 错误1067
- windows无法启动mysql服务错误1067
- windows 10安装mysql 5.7后,启动服务提示“本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。
- Windows 2003 Server中仅仅需设置为自动启动的服务
- Win2000/XP安装软件时提示“无法访问windows安装程序,服务中windows Installer状态为停止,不能启动”
- Windows无法启动OracleOraDb10g_home1TNSListener服务,错误1067
- Windows下无法启动MYSQL服务”1067 进程意外终止”解决办法
- WindowsTomcat设置成服务自动启动
- windows下安装cygwin后ssh服务无法启动的解决办法