Fehler beim schreiben Ereignisprotokoll verhindert, dass windows-Dienst starten?
Ich bin mit dem folgenden code zum erstellen einer benutzerdefiniertes Ereignisprotokoll in meinem windows-Dienst-Anwendung:
public ServiceConstructor()
{
InitializeComponent();
if (!EventLog.SourceExists("WinService"))
{
EventLog.CreateEventSource("WinService", "WinServiceLog");
eventLog1.Source = "WinService";
eventLog1.Log = "WinServiceLog";
}
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("Started");
}
Nach der Installation des service.msi, wenn ich den Dienst gestartet es gestartet und dann gestoppt. Dann fand ich die folgende Fehlermeldung im EventViewer von windows-log-Abschnitt:
Dienst kann nicht gestartet werden.
System.ArgumentException: Source-Eigenschaft nicht gesetzt wurde, bevor Sie schreiben
im Ereignisprotokoll.
at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
at System.Diagnostics.EventLog.WriteEntry(String message)
at WinService.Service.OnStart(String[] args)
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Quelle bereits vorhanden, es sieht aus wie Sie nicht initialisieren eventLog1.Quelle.
Schlage vor, Sie verschieben Sie die Initialisierung code, zu OnStart und aus dem Konstruktor.
Und verschieben Sie diese zwei Zeilen aus der if-Anweisung:
Versuchen Sie Folgendes:
EventLog.CreateEventSource("WinService", "Application");
und
eventLog1.Log = "Application";
Auch die folgende OnStart:
eventLog1.Log="Application"
eventLog1.Source = "WinService";