it-swarm.com.de

Die Quelle wurde nicht gefunden, aber einige oder alle Ereignisprotokolle konnten nicht durchsucht werden

Ich bekomme die folgende Ausnahme. Ich habe dem Asp.net-Konto bei Eventlogs in der Registrierungsbearbeitung die vollständige Kontrolle erteilt.

[SecurityException: Die Quelle wurde nicht gefunden, es wurden jedoch einige oder alle Ereignisse Protokolle konnten nicht durchsucht werden. Nicht zugreifbare Protokolle: Sicherheit.]

System.Diagnostics.EventLog.FindSourceRegistration(String source,  String machineName, Boolean readOnly, Boolean wantToCreate) +664
System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) +109
System.Diagnostics.EventLog.SourceExists(String source) +14 Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher.VerifyValidSource() +41

Ich denke, das liegt an einem Konfigurationsproblem auf dem Server?

112
Vaibhav Jain

EventLog.SourceExists führt die Unterschlüssel von HKLM\SYSTEM\CurrentControlSet\services\eventlog auf, um festzustellen, ob er einen Unterschlüssel mit dem angegebenen Namen enthält. Wenn das Benutzerkonto, unter dem der Code ausgeführt wird, keinen Lesezugriff auf einen Unterschlüssel hat, auf den es zuzugreifen versucht (in Ihrem Fall der Unterschlüssel Security), bevor die Zielquelle gefunden wird, wird eine Ausnahme wie die beschriebene angezeigt.

Der übliche Ansatz für die Behandlung solcher Probleme besteht darin, Ereignisprotokollquellen registrieren zur Installationszeit (unter einem Administratorkonto) anzunehmen und dann davon auszugehen, dass sie zur Laufzeit vorhanden sind. Dadurch wird jede mögliche Ausnahme als unerwartet behandelt, wenn ein Zielereignis vorliegt Protokollquelle existiert zur Laufzeit nicht wirklich.

98
Nicole Calinoiu

Hatte die gleiche Ausnahme. In meinem Fall musste ich die Eingabeaufforderung mit Administratorrechten ausführen. 

Klicken Sie im Startmenü mit der rechten Maustaste auf Eingabeaufforderung und wählen Sie "Als Administrator ausführen".

63
live-love

Für mich war dieser Fehler auf den Befehl Prompt zurückzuführen, der nicht unter Administratorrechten ausgeführt wurde. Klicken Sie mit der rechten Maustaste auf den Befehl Aufforderung und sagen Sie " Als Administrator ausführen ".

Sie benötigen eine Administratorrolle, um einen Dienst zu installieren oder zu deinstallieren.

9
Raza

Starten Sie die Developer-Befehlszeile "Als Administrator". Dieses Konto hat vollen Zugriff auf das Sicherheitsprotokoll

8
dmolisher

Hat nicht für mich gearbeitet.

Ich habe einen neuen Schlüssel- und Zeichenfolgenwert erstellt und konnte ihn zum Laufen bringen

Key= HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\<Your app name>\
String EventMessageFile value=C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll
6
Mike Hart

Wenn Sie eine Neuinstallation der SenseNet TaskManagement-Website unter IIS durchführen (aus Quellcode, nicht aus WebPI), erhalten Sie diese Meldung, die normalerweise mit der SignalR-Kommunikation zusammenhängt. Wie @ nicole-caliniou darauf hinweist, liegt dies an einer fehlgeschlagenen Schlüsselsuche in der Registry. 

Um dieses Problem für SenseNet TaskManagement v1.1.0 zu beheben, suchen Sie zuerst den Namen des Registrierungsschlüssels in der Datei web.config. Standardmäßig ist es "SnTaskWeb".

 <appSettings>
   <add key="LogSourceName" value="SnTaskWeb" />

Öffnen Sie den Registrierungseditor regedit.exe und navigieren Sie zu HKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask. Klicken Sie mit der rechten Maustaste auf SnTask und wählen Sie New Key aus. Benennen Sie den Schlüssel SnTaskWeb für die oben gezeigte Konfiguration. Klicken Sie dann mit der rechten Maustaste auf das Element SnTaskWeb und wählen Sie New Expandable String Value aus. Der Name sollte EventMessageFile sein und die Wertdaten sollten C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll sein.

Schlüsselwörter: signalr, sensenet, regedit, Berechtigungen

0
Thane Plummer

Für mich hat gerade iisreset gearbeitet (cmd als Administrator ausführen -> iisreset). Vielleicht könnte jemand es versuchen. 

0
Miroslav Bihari

Nicht zugreifbare Protokolle: Sicherheit

Eine neue Ereignisquelle muss einen eindeutigen Namen für alle Protokolle, einschließlich Security (die zum Lesen Administratorrechte haben) benötigen.

Ihre App benötigt also admin privileg , um eine Quelle zu erstellen. Aber das ist wahrscheinlich ein Overkill.

Ich habe dieses Powershell-Skript geschrieben, um die Ereignisquelle nach Belieben zu erstellen. Speichern Sie es als *.ps1 und führen Sie es mit any privileg aus, damit es sich erhöht.

# CHECK OR RUN AS ADMIN

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{   
    $arguments = "& '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
    Break
}

# CHECK FOR EXISTENCE OR CREATE

$source = "My Service Event Source";
$logname = "Application";

if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
    [System.Diagnostics.EventLog]::CreateEventSource($source, $logname);
    Write-Host $source -f white -nonewline; Write-Host " successfully added." -f green;
}
else
{
    Write-Host $source -f white -nonewline; Write-Host " already exists.";
}

# DONE

Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
0
Bizhan