Я написал 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 и некоторые оболочки над Salesforce CLI
для Salesforce.