C# 错误1053服务未及时响应启动或控制请求
我已经创建并安装了几次服务。最初它工作正常,但在服务代码中进行一些更改后,当我在Services.msc中重新启动服务时,它开始出现错误: 错误1053:服务未及时响应启动或控制请求 代码: 这是我的主要方法代码C# 错误1053服务未及时响应启动或控制请求,c#,.net,timer,windows-services,C#,.net,Timer,Windows Services,我已经创建并安装了几次服务。最初它工作正常,但在服务代码中进行一些更改后,当我在Services.msc中重新启动服务时,它开始出现错误: 错误1053:服务未及时响应启动或控制请求 代码: 这是我的主要方法代码 static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new AutoSMS() }; ServiceBa
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new AutoSMS()
};
ServiceBase.Run(ServicesToRun);
}
我还尝试了以下步骤:
- 转到开始>运行>并键入regedit
- 导航到:HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control
- 选中控制文件夹后,在右侧窗格中单击鼠标右键,然后-选择“新建DWORD值”
- 将新DWORD命名为:ServicesPipeTimeout
- 右键单击ServicesPipeTimeout,然后单击修改
- 单击Decimal,键入“180000”,然后单击OK
- 重新启动计算机
installutil AutoSMS.exe
installutil /u AutoSMS.exe
我刚刚在.NET4.5中本地尝试了这段代码,该服务为我正确启动和停止。我怀疑您的问题可能与创建事件日志源有关 方法:
EventLog.SourceExists("MySource")
根据以下文档,要求运行代码的用户必须是管理员:
检查服务是否以具有管理员权限的用户身份运行。这是因为Microsoft Windows服务控件,它有时控制服务的状态。如果服务在30秒内未发送响应,则您将出现此错误 您可以修改注册表,这样服务将有更多的时间响应
Go to Start > Run > and type regedit
Navigate to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
With the control folder selected, right click in the pane on the right and select new DWORD Value
Name the new DWORD: ServicesPipeTimeout
Right-click ServicesPipeTimeout, and then click Modify
Click Decimal, type '180000', and then click OK
Restart the computer
或者确保在那一刻没有另一个进程与服务对话,可能有冲突我不知道我遇到了完全相同的问题,我所做的只是在编译dll时将调试模式更改为Release。这解决了我的问题,如何/为什么?我不知道我已经问过了,所以在我的例子中,问题是关于在App.config文件中设置的缓存配置。一旦我从App.config文件中删除了下面的行,问题就解决了
<cachingConfiguration defaultCacheManager="MyCacheManager">
<cacheManagers>
<add name="MyCacheManager" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
expirationPollFrequencyInSeconds="60"
maximumElementsInCacheBeforeScavenging="50000"
numberToRemoveWhenScavenging="1000"
backingStoreName="NullBackingStore" />
</cacheManagers>
<backingStores>
<add type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="NullBackingStore" />
</backingStores>
我遇到了同样的问题,根本不知道如何解决。是的,发生这种情况是因为服务引发了异常,但是您可以遵循一些一般准则来纠正这种情况:
- 检查您是否编写了正确的代码来启动服务:
ServiceBase[]ServicesToRun; ServicesToRun=新的ServiceBase[] { 新WinSowserviceToRun() }; ServiceBase.Run(ServicesToRun);
- 您需要确保在类WinSOWServiceToRun中运行某种无限循环
- 最后,可能有一些代码没有记录任何内容,并且突然关闭了程序(我就是这样),在这种情况下,您必须遵循旧的调试方法,需要将一行代码写入源代码(text/db/where)。我所面临的是,由于运行该服务的帐户不是“Admin”,因此代码只是在下降,没有记录任何异常,以防它试图写入“Windows事件日志”,即使代码是用来记录异常的。实际上,登录到日志甚至不需要管理员权限,但需要管理员权限来定义源。如果系统中尚未定义事件源,并且服务首次尝试在没有管理员权限的情况下记录事件,则会失败。要解决此问题,请执行以下步骤:
- 以管理员权限打开命令提示符
- 粘贴命令:
eventcreate/ID 1/L APPLICATION/T INFORMATION/SO/D”“
- 按回车键
- 现在开始服务
EntityFramework
或任何其他方式在服务启动时启动数据库连接,请检查ConnectionString
在我的情况下,当我收到错误错误1053时,服务没有及时响应启动或控制请求
这就是问题所在:
我使用的是EntityFramework,连接字符串有误。因此,EntityFramework在启动时基本上无法使用不正确的连接字符串连接到数据库,并且超时
只需将数据库连接字符串替换为正确的字符串,即可正常工作。
根本不需要任何框架更新或任何其他系统/配置更改。在我的情况下,我在调试模式下发布服务。 解决方案是:
- 将解决方案更改为发布模式
- 使用命令InstallUtil-u WindowsServiceName.exe卸载旧服务
- 再次安装服务
InstallUtil-i WindowsServiceName.exe
之后它工作得很好。这对我来说很有效。基本上确保登录用户设置为正确的用户。但是,这取决于帐户基础结构的设置方式。在我的示例中,它使用AD帐户用户凭据 在启动菜单搜索框中搜索“服务” -在服务中找到所需的服务 -右键单击并选择“登录”选项卡 -选择“此帐户”并输入所需的内容/凭据 -确定,然后像往常一样开始服务
此问题的可能解决方案之一[它解决了我这边的问题,我的应用程序是基于JAVA的应用程序]: 1) 检查应用程序是否指向正确的java版本(检查应用程序中的java版本和路径) 或 2) 检查配置的java版本
<cachingConfiguration defaultCacheManager="MyCacheManager">
<cacheManagers>
<add name="MyCacheManager" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
expirationPollFrequencyInSeconds="60"
maximumElementsInCacheBeforeScavenging="50000"
numberToRemoveWhenScavenging="1000"
backingStoreName="NullBackingStore" />
</cacheManagers>
<backingStores>
<add type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="NullBackingStore" />
</backingStores>
using System;
using System.Diagnostics;
using System.ServiceProcess;
namespace WindowsService
{
static class Program
{
static void Main()
{
try
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
catch (Exception ex)
{
EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
}
}
}
}
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new WinsowsServiceToRun()
};
ServiceBase.Run(ServicesToRun);
#If Debug
...
...
...
#else
...
...
#endif
static void Main()
{
#if DEBUG
MailService service = new MailService();
service.Ondebug();
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MailService()
};
ServiceBase.Run(ServicesToRun);
#endif
}
}
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MailService()
};
ServiceBase.Run(ServicesToRun);
}
try
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
<span class="skimlinks-unlinked">ServiceBase.Run(ServicesToRun</span>);
}
catch (Exception ex)
{
EventLog.WriteEntry("Application", ex.ToString(), <span class="skimlinks-unlinked">EventLogEntryType.Error</span>);
}
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
using Microsoft.Extensions.Hosting;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] arguments)
{
IHostBuilder hostBuilder = Host.CreateDefaultBuilder(arguments);
hostBuilder.UseWindowsService();
hostBuilder.Build().Run();
}
}
}
sc.exe create ConsoleApp1 binPath= "<BIN_PATH>\ConsoleApp1.exe"