.NET Core 错误1053 服务没有及时响应启动或控制请求
.NET Core Error 1053 the service did not respond to the start or control request in a timely fashion
我在 this
之后从我的 .NET Core 项目开始创建了一个 Windows 服务
在此之后,我在我的工作机器上正确安装并启动了它。
这是我的服务class:
using System;
using System.Diagnostics;
using System.ServiceProcess;
using System.Threading.Tasks;
namespace xxx
{
public class WindowsService
{
static void Main(string[] args)
{
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
using (var service = new Service())
{
ServiceBase.Run(service);
}
}
}
internal class Service : ServiceBase
{
public Service()
{
ServiceName = "...";
}
protected override void OnStart(string[] args)
{
try
{
base.OnStart(args);
Task.Run(() => xxxx);
}
catch (Exception ex)
{
EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
}
}
protected override void OnStop()
{
base.OnStop();
}
protected override void OnPause()
{
base.OnPause();
}
}
}
所以,我复制了文件并将其安装在服务器上。在这里,当我尝试启动它时,我得到:
在此之后,我开始大量谷歌搜索...例如,我尝试了以下步骤:
转到“开始”> 运行 > 并键入 regedit
导航至:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
有了控制文件夹selected,右击右边的窗格,然后-select新的DWORD值
将新的 DWORD 命名为:ServicesPipeTimeout
右键单击 ServicesPipeTimeout,然后单击修改
单击“十进制”,键入“180000”,然后单击“确定”
重启电脑
这里的奇怪之处在于语音 ServicesPipeTimeout 并不存在,而我创建了它。将服务器与我的工作机器进行比较,服务器中还没有其他值。他们是:
- ServicesPipeTimeout
- OsBootstatPath
这里是服务器上regedit的截图:
这些相关吗?
我也试过重新安装服务,重新编译我的文件...我该如何解决这个问题? 错误立即出现,它不会等待任何超时!
当我将我的项目切换到另一个位置时遇到了这个问题。
当我移动项目时,我也复制了bin/debug文件夹中的文件。清除调试文件夹并创建新版本后,问题得到解决。
看看这是否有效!
这是一个有点老的问题,但有人可能会觉得这很有用。
所以我在 Program.cs 中有以下代码:
builder.SetBasePath(Environment.CurrentDirectory).AddJsonFile("appsettings.json")
改为:
builder.SetBasePath(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)).AddJsonFile("appsettings.json")
这似乎解决了我的问题。
这个错误的问题在于它是超级通用的。
希望MS以后给我们一些日志。
我在 this
之后从我的 .NET Core 项目开始创建了一个 Windows 服务在此之后,我在我的工作机器上正确安装并启动了它。
这是我的服务class:
using System;
using System.Diagnostics;
using System.ServiceProcess;
using System.Threading.Tasks;
namespace xxx
{
public class WindowsService
{
static void Main(string[] args)
{
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
using (var service = new Service())
{
ServiceBase.Run(service);
}
}
}
internal class Service : ServiceBase
{
public Service()
{
ServiceName = "...";
}
protected override void OnStart(string[] args)
{
try
{
base.OnStart(args);
Task.Run(() => xxxx);
}
catch (Exception ex)
{
EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
}
}
protected override void OnStop()
{
base.OnStop();
}
protected override void OnPause()
{
base.OnPause();
}
}
}
所以,我复制了文件并将其安装在服务器上。在这里,当我尝试启动它时,我得到:
在此之后,我开始大量谷歌搜索...例如,我尝试了以下步骤:
转到“开始”> 运行 > 并键入 regedit
导航至:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
有了控制文件夹selected,右击右边的窗格,然后-select新的DWORD值
将新的 DWORD 命名为:ServicesPipeTimeout
右键单击 ServicesPipeTimeout,然后单击修改
单击“十进制”,键入“180000”,然后单击“确定”
重启电脑
这里的奇怪之处在于语音 ServicesPipeTimeout 并不存在,而我创建了它。将服务器与我的工作机器进行比较,服务器中还没有其他值。他们是:
- ServicesPipeTimeout
- OsBootstatPath
这里是服务器上regedit的截图:
这些相关吗?
我也试过重新安装服务,重新编译我的文件...我该如何解决这个问题? 错误立即出现,它不会等待任何超时!
当我将我的项目切换到另一个位置时遇到了这个问题。
当我移动项目时,我也复制了bin/debug文件夹中的文件。清除调试文件夹并创建新版本后,问题得到解决。
看看这是否有效!
这是一个有点老的问题,但有人可能会觉得这很有用。
所以我在 Program.cs 中有以下代码:
builder.SetBasePath(Environment.CurrentDirectory).AddJsonFile("appsettings.json")
改为:
builder.SetBasePath(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)).AddJsonFile("appsettings.json")
这似乎解决了我的问题。 这个错误的问题在于它是超级通用的。 希望MS以后给我们一些日志。