135 votes

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

Je reçois l'exception suivante. J'ai donné un contrôle total au compte Asp.net sur les journaux d'événements dans l'éditeur de Registre.

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

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?

0 votes

1 votes

J'ai posté ma réponse et le modérateur l'a supprimée. Veuillez vous assurer d'exécuter votre service en tant que système local mais pas en tant qu'autre, car le système local peut seulement créer des journaux d'événements et des sources. J'exécutais mon service en tant que service réseau et j'ai eu cette exception. Plus tard, j'ai arrêté le service et l'ai redémarré en tant que système local et cela a fonctionné correctement, puis j'ai arrêté et redémarré mon service en tant que service réseau et cela a fonctionné correctement.

0 votes

Vous devez temporairement désactiver l'impersonation dans le code, pour plus de détails Vérifiez ce La source n'a pas été trouvée, mais certains journaux d'événements ou tous ne peuvent pas être recherchés. Journaux inaccessibles : Sécurité.

3voto

Bizz Points 1637

Journaux inaccessibles : Sécurité

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

Par conséquent, votre application aura besoin d'un privilège d'administrateur pour créer une source. Mais c'est probablement excessif.

J'ai écrit ce script powershell pour créer la source d'événements à volonté. Enregistrez-le sous *.ps1 et exécutez-le avec n'importe quel privilège et il s'élèvera de lui-même.

# VÉRIFIER OU EXÉCUTER EN TANT QU'ADMINISTRATEUR

Si (-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
}

# VÉRIFIER L'EXISTENCE OU CRÉER

$source = "Ma source d'événements de service";
$logname = "Application";

if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
    [System.Diagnostics.EventLog]::CreateEventSource($source, $logname);
    Write-Host $source -f white -nonewline; Write-Host " ajouté avec succès." -f green;
}
else
{
    Write-Host $source -f white -nonewline; Write-Host " existe déjà.";
}

# TERMINÉ

Write-Host -NoNewLine 'Appuyez sur n'importe quelle touche pour continuer...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');

1voto

Miroslav Bihari Points 31

Pour moi, seul iisreset a fonctionné (exécutez cmd en tant qu'administrateur -> iisreset). Peut-être que quelqu'un pourrait essayer.

1voto

Mandi Points 67

Récemment, j'ai rencontré l'erreur et aucune des solutions proposées n'a fonctionné pour moi. Ce qui a résolu l'erreur pour moi a été d'ajouter l'utilisateur du pool d'applications au groupe des utilisateurs avec des pouvoirs spécifiques dans la gestion de l'ordinateur. Je n'ai pas pu utiliser le groupe Administrateurs en raison d'une politique d'entreprise.

0voto

Thane Plummer Points 2049

Si vous effectuez une nouvelle installation du site Web de gestion des tâches SenseNet sur IIS (à partir du code source, et non de WebPI), vous obtiendrez ce message, généralement lié à la communication SignalR. Comme @nicole-caliniou le souligne, cela est dû à une recherche de clé dans le Registre qui échoue.

Pour résoudre ce problème pour SenseNet TaskManagement v1.1.0, trouvez d'abord le nom de la clé dans le fichier web.config. Par défaut, il est "SnTaskWeb".

Ouvrez l'éditeur de Registre, regedit.exe, et rendez-vous à HKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask. Cliquez avec le bouton droit sur SnTask et sélectionnez Nouvelle clé, et nommez la clé SnTaskWeb pour la configuration indiquée ci-dessus. Ensuite, cliquez avec le bouton droit sur l'élément SnTaskWeb et sélectionnez Nouvelle valeur de chaîne extensible. Le nom doit être EventMessageFile et les données de valeur doivent être C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll.

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

0voto

JavaScriptDude Points 140

Si vous voulez simplement vérifier si une Source existe sur la machine locale mais que vous n'avez pas la possibilité d'obtenir l'autorisation pour le faire, vous pouvez la consulter à travers l'exemple suivant (VB).

Cela contourne l'erreur de sécurité. Vous pourriez de manière similaire modifier cette fonction pour renvoyer le Nom du Journal (LogName) pour la Source.

Public Shared Function eventLogSourceExists(sSource as String) as Boolean
    Try
        EventLog.LogNameFromSourceName(sSource, ".")
        Return True
    Catch
        Return False
    End Try
End Function

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X