web-dev-qa-db-fra.com

La source n'a pas été trouvée, mais certains ou tous les journaux d'événements n'ont pas pu être recherchés.

Je reçois l'exception suivante. J'ai donné le plein contrôle au compte Asp.net sur Eventlogs dans le registre.

[SecurityException: la source n'a pas été trouvée, mais certains ou tous les événements les journaux n'ont pas pu être recherchés. Journaux inaccessibles: Sécurité.]

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

Je suppose que cela est dû à un problème de configuration sur le serveur?

112
Vaibhav Jain

EventLog.SourceExists énumère à travers les sous-clés de HKLM\SYSTEM\CurrentControlSet\services\eventlog pour voir s'il contient une sous-clé avec le nom spécifié. Si le compte d'utilisateur sous lequel le code est exécuté n'a pas d'accès en lecture à une sous-clé à laquelle il tente d'accéder (dans votre cas, la sous-clé Security) avant de trouver la source cible, vous verrez une exception similaire à celle que vous avez décrite.

L’approche habituelle pour traiter ces problèmes consiste à enregistrer les sources du journal des événements au moment de l’installation (sous un compte administrateur), puis supposer qu’elles existent au moment de l’exécution, permettant ainsi à toute exception résultante d’être traitée comme inattendue si une source de journal des événements cible n'existe pas réellement au moment de l'exécution.

98
Nicole Calinoiu

A eu la même exception. Dans mon cas, je devais exécuter l'invite de commande avec les droits d'administrateur. 

Dans le menu Démarrer, cliquez avec le bouton droit de la souris sur Invite de commandes, sélectionnez "Exécuter en tant qu'administrateur".

63
live-love

Pour moi, cette erreur était due à la commande Invite, qui ne fonctionnait pas sous les privilèges d'administrateur. Vous devez faire un clic droit sur la commande Invite et dire " Exécuter en tant qu'administrateur ".

Vous avez besoin du rôle d'administrateur pour installer ou désinstaller un service.

9
Raza

Lancez la ligne de commande du développeur "En tant qu'administrateur". Ce compte a un accès complet au journal de sécurité.

8
dmolisher

Cela n'a pas fonctionné pour moi.

J'ai créé une nouvelle valeur de clé et de chaîne et j'ai réussi à le faire fonctionner.

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

Si vous effectuez une nouvelle installation du site Web SenseNet TaskManagement sur IIS (à partir du code source, pas de WebPI), vous obtiendrez ce message, généralement lié à la communication SignalR. Comme le souligne @ nicole-caliniou, cela est dû à une recherche de clé dans le registre qui a échoué. 

Pour résoudre ce problème avec SenseNet TaskManagement version 1.1.0, commencez par rechercher le nom de la clé de registre dans le fichier web.config. Par défaut c'est "SnTaskWeb".

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

Ouvrez l'éditeur de registre, regedit.exe et accédez à HKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask. Cliquez avec le bouton droit sur SnTask et sélectionnez New Key, puis nommez la clé SnTaskWeb pour la configuration indiquée ci-dessus. Cliquez ensuite avec le bouton droit sur l’élément SnTaskWeb et sélectionnez New Expandable String Value. Le nom doit être EventMessageFile et les données de la valeur doivent être C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll.

Mots-clés: signalr, sensenet, regedit, permissions

0
Thane Plummer

Pour moi, je viens de travailler iisreset (exécutez cmd en tant qu'administrateur -> iisreset). Peut-être que quelqu'un pourrait essayer. 

0
Miroslav Bihari

Journaux inaccessibles: Sécurité

Une nouvelle source d'événements doit avoir un nom unique dans tous les journaux, y compris Security (qui nécessite le privilège administrateur lors de la lecture).

Donc, votre application aura besoin du privilège admin pour créer une source. Mais c'est probablement un peu exagéré.

J'ai écrit ce script powershell pour créer la source de l'événement à volonté. Enregistrez-le sous le nom *.ps1 et exécutez-le avec le privilège any. Il s’élèvera lui-même.

# 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