#c# #.net #windows-services #setup-project
#c# #.net #windows-services #установка-проект
Вопрос:
При установке службы Windows я получаю следующую ошибку.
Ошибка 1001 . На этапе фиксации установки произошло исключение. Это исключение будет проигнорировано, и установка будет продолжена. Однако приложение может работать некорректно после завершения установки -> Не удается запустить службу ACSERVICE2 на компьютере’.’.-> Служба не ответила на запрос запуска или управления своевременно.
Любая помощь приветствуется…
Код :
protected override void OnStart(string[] args)
{
try
{
AC_Main objMain = new AC_Main();
td=new Thread(new ThreadStart(objMain.Main));
td.IsBackground = true;
td.Start();
eLog.WriteEntry("Service Started at :" System.DateTime.Now.ToString());
}
catch(System.Security.SecurityException exc)
{
}
}
protected override void OnStop()
{
td.Abort();
eLog.WriteEntry("Service Stopped at :" System.DateTime.Now.ToString());
}
Зафиксированный метод :
private void ProjectInstaller_Committed(object sender, InstallEventArgs e)
{
serviceController.ServiceName = "ACSERVICE2";
ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new System.Management.ManagementScope(@"rootCIMV2", coOptions);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" this.serviceController.ServiceName "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);
this.serviceController.Start();
}
Ответ №1:
Вы никогда не должны перехватывать ошибку, а затем игнорировать ее.
Это может быть вашей проблемой. Что произойдет, если вы добавите некоторые записи в блок catch, что-то вроде этого?
catch(System.Security.SecurityException exc)
{
eLog.WriteEntry("SecurityException: " exc.Message);
}
Комментарии:
1. Уважаемый пользователь, спасибо за ваш ответ, но я тоже пробовал так: catch(System. Безопасность. Исключение SecurityException exc) { MessageBox. Показать(«OnStart :» exc.toString()); }
2. Я не думаю, что MessageBox будет работать в службе Windows. Вызов MessageBox. Show(), вероятно, вызывает другую ошибку. Вам необходимо записать исходную ошибку в текстовый файл или журнал событий Windows или что-то в этом роде.
3. @MubbasherKhaliq в службе, если вы хотите что-то записать на экран, это невозможно, однако вы можете записать это в текстовый файл или запись в журнале Windows, что довольно легко сделать, и это даст вам лучшую отправную точку, чтобы выяснить, что пошло не так в службе.
Ответ №2:
Да, это происходит, если вы неправильно удалили службу, которую пытаетесь установить снова. У меня была такая же проблема несколько дней назад. Я создал новый проект, скопировал тот же код и снова установил службу с нуля. Моя проблема заключалась в том, что