У меня есть служба Windows, которую я могу установить на свою локальную машину с помощью installutil без проблем.Сервис не запускался своевременно - служба C# windows
Теперь эта служба должна быть установлена на сервере. Я копирую все файлы на сервер и запускаю ту же самую команду, устанавливаю службу для входа в систему как локальную учетную запись пользователя, и когда начинается сервис, я получаю сообщение об ошибке «logon failed» - хорошо, возможно, учетная запись пользователя является проблемой.
Таким образом, я меняю журнал службы на локальную системную учетную запись. Я запускаю услугу, и мне говорят: «Служба не отвечала на вопрос о начале или контроле своевременно».
Итак, я искал Google и пытался использовать различные решения, но безуспешно. Поэтому я подумал, может быть, это было что-то в методе OnStart, который сломался (хотя у меня есть протоколы вызовов, которые никогда не регистрировались). Поэтому я удалил весь код из события OnStart и все равно служба не запустилась, я получил ошибку «своевременной моды».
Итак, где я? Я считаю, что это может быть связано с рекомендациями, которые я определил в проекте. Чтобы проверить это, я создал новый шаблон службы Windows из VS2012 без ссылок (кроме стандартных по умолчанию), и я могу запустить службу. Без вопросов.
Так что мой вопрос в том, что может быть причиной этого? В моем проекте ссылки указывают на местоположения, которые не существуют на сервере, однако в каталоге, где находится служба, есть все связанные DLL-ссылки.
Edit: Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
namespace RetrieveAndProcessSecurityLogs
{
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new LogService()
};
ServiceBase.Run(ServicesToRun);
}
}
}
LogService.cs
public partial class LogService : ServiceBase
{
public LogService()
{
InitializeComponent();
this.ServiceName = "Retrieve and Process Security Logs";
this.CanPauseAndContinue = true;
this.CanStop = true;
}
protected override void OnStart(string[] args)
{
//...
}
protected override void OnStop()
{
//...
}
Edit: Установленная версия .NET на сервере v4.0, однако в файле конфигурации приложения для проект есть эта строка:
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
Может ли быть проблемой 4,5?
Редактировать 2: Нижняя строка: если я ссылаюсь на DLL, я получаю своевременную ошибку моды. Если у меня нет дополнительной ссылки на DLL, она запускается.
Извините за рассказ. Andrew
почти наверняка разрешений. но без кода = нет ответа. –
Какой код вы бы вы хотели? Проект имеет несколько файлов, классов, интерфейсов и т. Д. – andrewb
Начните с кода в вашей программе program.cs и инициализации службы. – VahidNaderi