2009-08-11 13 views
4

Ich arbeite mit etwas altem Code (und ehrlich gesagt weiß ich nicht die Hälfte von dem, was es tut) versuchen, es auf IIS7 zu verschieben.Problem beim Zugriff/Schreiben auf EventLog

Eines der Probleme, die ich sehe, ist, dass ich diesen Fehler:

[Security: Die Quelle wurde nicht gefunden, aber einige oder alle Ereignisprotokolle nicht durchsucht werden können. Nicht zugreifbare Protokolle: Sicherheit.]

Wenn ich manuell zu HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ Security gehe und die Berechtigung (Security) dieses Schlüssels so festlege, dass "Jeder" vollen Zugriff hat, geht das kein Problem. Aber das ist natürlich nicht die optimale Lösung.

Wer weiß von einem besseren Weg, diese Ausnahme zu entfernen?

Antwort

4

Eine Möglichkeit, dies zu beheben, besteht darin, eine einfache Konsolenanwendung unter voller Vertrauenswürdigkeit auszuführen, die einen einzelnen EventLog-Eintrag unter dem betreffenden Quellennamen schreibt. Sie müssen dies einmal für jeden Server tun.

Von diesem Moment an sollten Sie in der Lage sein, unter diesem Quellennamen zu loggen. (zumindest das war meine Beobachtung.) Es ist nur Erstellen eine unbekannte Quelle, die Sie unter ASP.NET nicht tun können, Protokollierung auf eine vorhandene Quelle sollte kein Problem sein.

Frage ist: Kennen Sie den Quellennamen? Wenn Sie den Zugriff auf Jeder nicht vorübergehend gewähren, warten Sie auf eine Protokollnachricht und das Entfernen von Jeder sollte ebenfalls funktionieren.

Die offizielle Möglichkeit von Microsoft besteht darin, ein Installationsprogramm zu erstellen, das eine Ereignisprotokollquelle registriert.

+0

Zwei Fragen: 1) Ich sehe keine Protokollmeldung beim Gewähren von Zugriff auf Jeder. Das ist komisch. 2) Wie registriere ich eine Ereignisprotokollquelle vom Installationsprogramm (oder ein benutzerdefiniertes vb-Skript für diese Angelegenheit)? – encee

+0

Wie Rob Elliott sagt 'EventLog.CreateEventSource()'. Es ist möglich, dass das ASP.NET alleine macht, bevor es überhaupt mit der Protokollierung beginnt. – Ruben

+0

Ich versuchte, ein vbscript machen, das tut dies: Imports System Imports System.Diagnostics EventLog.CreateEventSource "AppSource", "Application" aber ich erhalte eine Fehlermeldung, dass: Typenkonflikt: 'Einfuhren' Was in der Welt bedeutet das? – encee

1

Von this thread:

EventLog.CreateEventSource() method attempts to search Event Sources under all event logs, not just the event log for which you want to create the source. There are two solutions to this. The first, easiest, and most insecure, is just to give read/write access to all event logs for the ASP.NET account.

-Code und andere Lösungen sind ebenfalls vorhanden.