无法启动Windows服务,错误1064

时间:2018-11-18 21:12:32

标签: c# .net windows service windows-10

我写了一个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。

8 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。原因是我忘记在配置中正确设置数据库连接。

答案 1 :(得分:1)

我在Windows服务中也遇到了相同的错误。 原因是无法读取配置参数,因此崩溃。

添加一些验证(错误修复),Windows Services可以正确启动它。

答案 2 :(得分:1)

在我的情况下,错误是由于事件日志名称的问题

在我转到 RegEdit 并从 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

中删除旧服务名称后,它得到了修复

enter image description here

答案 3 :(得分:0)

我在启动服务时遇到了完全相同的错误1064。对我来说,我注册的服务用户不是数据库中的有效用户。添加后,效果很好。

答案 4 :(得分:0)

由于@Siderite Zackwehdex的评论,我能够在以下位置找到EventViewer中底层异常的完整堆栈跟踪:

  

Windows日志\应用程序

在我的情况下,我的服务名为“ HttpDispatcher”,它显示在顶部窗格的“源”列中。

我立即看到这是由于依赖项问题导致的,我的.NET 4.7.2项目没有遍历我的.NET Standard参考。 (That ol' chestnut)。

Event Viewer: Windows Logs/Application

答案 5 :(得分:0)

我也遇到了这个问题。就我而言,这是由于与数据库的连接失败。我认为这是由于代码引发了异常。

我的错误: Windows无法在本地计算机上启动service1服务。

错误1064 :处理控制请求时服务中发生了异常

我通过更新第三方DLL纠正了我的问题。

答案 6 :(得分:0)

我遇到了同样的问题,这是我在解决问题后的解决方法。

  • 如果要在具有多个用户的服务器上运行服务,请 确保以管理员用户身份运行该服务。点击服务 属性,然后在“登录”选项卡上单击此帐户并提供 管理员用户名和密码。

  • 并且如果您的服务正在访问某些共享驱动器,请确保 您在所有服务器上都有一个普通用户来访问共享 驱动器并将用户添加为本地管理员。

答案 7 :(得分:0)

对我来说,它发生在我试图重新启动一个进程时。结果发现进程挂在“停止”状态,所以我不得不通过命令行和 PID 手动终止它。