Служба на локальном компьютере запущена, затем остановлена ​​ошибка

У меня есть служба Windows. Он работал нормально, пока я не добавил код для начала ведения журнала. Теперь, когда я пытаюсь запустить службу, я получаю следующую ошибку:

Служба GBBService на локальном компьютере была запущена, а затем остановлена. Некоторые службы останавливаются автоматически, если им нечего делать, например, журналы производительности и служба предупреждений.

Вот код моей службы: - Из установщика проекта.

public partial class ProjectInstaller : System.Configuration.Install.Installer
{
    string eventSource = "GBBServiceLog";

    public ProjectInstaller()
    {
        InitializeComponent();
        EventLogInstaller installer = FindInstaller(this.Installers);
        if (installer != null)
        {
            installer.Source = eventSource;
            installer.Log = "My GBBServiceLog";
        }
    }

    private EventLogInstaller FindInstaller(InstallerCollection installers)
    {
        foreach (Installer installer in installers)
        {
            if (installer is EventLogInstaller)
            {
                return (EventLogInstaller)installer;
            }
            EventLogInstaller eventLogInstaller = FindInstaller(installer.Installers);
            if (eventLogInstaller != null)
                return eventLogInstaller;
        }
        return null;
    }

    protected override void OnCommitted(IDictionary savedState)
    {
        base.OnCommitted(savedState);
        // Start the service after installation
        using (ServiceController sc = new ServiceController(this.serviceInstaller1.ServiceName))
        {
            sc.Start();
        }
    }
}

Изнутри моей службы:

public GBBService()
    {
        InitializeComponent();
        EventLog.Source = eventSource;
        EventLog.Log = "My GBB Service Log";

    }

    protected override void OnStart(string[] args)
    {
        EventLog.WriteEntry("GBBService Service Started");
    }

Я что-то не так сделал в своем коде?


person user1270384    schedule 25.03.2013    source источник
comment
это потому, что вы создали журнал событий My GBBServiceLog в установщике и в Сервисе, который вы собираетесь писать в My GBB Service Log   -  person sa_ddam213    schedule 25.03.2013
comment
так должно быть одинаково в обоих местах? это URL-адрес, на который я ссылался при работе над ним: блог. embrodesign.com/2012/05/event-log-from-windows-service не был уверен, должны ли быть имена журналов одинаковыми или разными   -  person user1270384    schedule 25.03.2013
comment
Я почти уверен, что вам нужно такое же имя, My GBB Service Log не существует, поэтому вам нужно создать его в службе или использовать тот, который вы создали в установщике.   -  person sa_ddam213    schedule 25.03.2013
comment
@ sa_ddam213 это было, пожалуйста, добавьте его в качестве ответа, чтобы я мог закрыть это!   -  person user1270384    schedule 25.03.2013
comment
без проблем :), рад, что у вас все заработало :)   -  person sa_ddam213    schedule 25.03.2013


Ответы (1)


Я думаю, проблема в том, что вы пытаетесь писать на EventLog, которого не существует.

В ServiceInstaller вы создаете EventLog My GBBServiceLog

if (installer != null)
{
    installer.Source = eventSource;
    installer.Log = "My GBBServiceLog";
}

Но в Service вы пытаетесь написать на My GBB Service Log

public GBBService()
{
    InitializeComponent();
    EventLog.Source = eventSource;
    EventLog.Log = "My GBB Service Log"; <--------------
}

Думаю, должно быть:

public GBBService()
{
    InitializeComponent();
    EventLog.Source = eventSource;
    EventLog.Log = "My GBBServiceLog";
}
person sa_ddam213    schedule 25.03.2013