我写了一个Windows Service可以在Win10上运行,在我决定对其进行一些更改之前,它运行得很好。我重写了一些逻辑,在Debug和Release配置中对其进行了测试,一切都很好。然后,我使用installutil.exe /u %servicename.exe%
卸载了该服务的当前版本,然后使用installutil.exe %servicename.exe%
重新安装了该服务。
由于某种原因,该新版本无法启动,并且因错误1064崩溃。这是完整的错误文本:
Windows could not start %servicename% service on Local Computer. Error 1064: An exception occurred in the service when handling the control request.
上次安装此服务时,遇到了一些困难,但是通过更改Log On
属性很快解决了这些问题。这次,它不起作用。请帮助解决此问题。
谢谢。
更新1
这是我的Main()
和OnStart()
服务方法:
Main()
static void Main()
{
#if DEBUG
var service = new SalesforceToJiraService();
service.OnDebug();
Thread.Sleep(Timeout.Infinite);
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new SalesforceToJiraService()
};
ServiceBase.Run(ServicesToRun);
#endif
}
OnStart()
protected override void OnStart(string[] args)
{
this.ConfigureServices();
this.timer.Start();
this.logger.Information("SalesforceToJira service started.");
}
更新2
更多代码:
ConfigureServices()
protected void ConfigureServices()
{
this.configuration = ConfigurationHelper.LoadConfiguration(ConfigurationPath);
this.logger = ConfigurationHelper.ConfigureLogger(this.configuration.Logs.LogsPath);
this.timer = ConfigurationHelper.ConfigureTimer(this.configuration.ProcessInterval.TotalMilliseconds,
(sender, eventArgs) => this.ProcessCasesAsync(sender, eventArgs).GetAwaiter().GetResult());
this.salesforceClient = new SalesforceCliClient(this.configuration.Salesforce.CliPath);
this.jiraClient = Jira.CreateRestClient(
this.configuration.Jira.Url,
this.configuration.Jira.Username,
this.configuration.Jira.Password);
}
我正在使用Newtonsoft.JSON
反序列化JSON配置文件,使用Serilog
进行日志记录,使用System.Timers.Timer
进行定期事件,使用AtlassianSDK
进行Jira API以及{ {1}} for Salesforce。
答案 0 :(得分:1)
我遇到了同样的问题。原因是我忘记在配置中正确设置数据库连接。
答案 1 :(得分:1)
我在Windows服务中也遇到了相同的错误。 原因是无法读取配置参数,因此崩溃。
添加一些验证(错误修复),Windows Services可以正确启动它。
答案 2 :(得分:1)
在我的情况下,错误是由于事件日志名称的问题
在我转到 RegEdit 并从 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
答案 3 :(得分:0)
我在启动服务时遇到了完全相同的错误1064。对我来说,我注册的服务用户不是数据库中的有效用户。添加后,效果很好。
答案 4 :(得分:0)
由于@Siderite Zackwehdex的评论,我能够在以下位置找到EventViewer中底层异常的完整堆栈跟踪:
Windows日志\应用程序
在我的情况下,我的服务名为“ HttpDispatcher”,它显示在顶部窗格的“源”列中。
我立即看到这是由于依赖项问题导致的,我的.NET 4.7.2项目没有遍历我的.NET Standard参考。 (That ol' chestnut)。
答案 5 :(得分:0)
我也遇到了这个问题。就我而言,这是由于与数据库的连接失败。我认为这是由于代码引发了异常。
我的错误: Windows无法在本地计算机上启动service1服务。
错误1064 :处理控制请求时服务中发生了异常
我通过更新第三方DLL纠正了我的问题。
答案 6 :(得分:0)
我遇到了同样的问题,这是我在解决问题后的解决方法。
如果要在具有多个用户的服务器上运行服务,请 确保以管理员用户身份运行该服务。点击服务 属性,然后在“登录”选项卡上单击此帐户并提供 管理员用户名和密码。
并且如果您的服务正在访问某些共享驱动器,请确保 您在所有服务器上都有一个普通用户来访问共享 驱动器并将用户添加为本地管理员。
答案 7 :(得分:0)
对我来说,它发生在我试图重新启动一个进程时。结果发现进程挂在“停止”状态,所以我不得不通过命令行和 PID 手动终止它。