2013-09-18 3 views
2

У меня есть служба 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

+0

почти наверняка разрешений. но без кода = нет ответа. –

+0

Какой код вы бы вы хотели? Проект имеет несколько файлов, классов, интерфейсов и т. Д. – andrewb

+0

Начните с кода в вашей программе program.cs и инициализации службы. – VahidNaderi

ответ

3

В будущем для всех, кто сталкивается с этой проблемой, проблема была одной из ссылок, построенных против .NET FW 4.5, и на сервере, где была установлена ​​служба, был .NET FW 4. У моей машины было 4.5 ,

Смежные вопросы