web-dev-qa-db-fra.com

Que dois-je changer pour permettre à mon application IIS7 ASP.Net 3.5 de créer une source d'événements et de consigner les événements dans Windows EventLog?

ASP.Net 3.5 fonctionnant sous IIS 7 ne semble pas autoriser cela hors de la boîte.

        if (!EventLog.SourceExists("MyAppLog"))
            EventLog.CreateEventSource("MyAppLog", "Application");

        EventLog myLog = new EventLog();
        myLog.Source = "MyAppLog";
        myLog.WriteEntry("Message");
32
JTew

Cela fait partie de la sécurité de Windows depuis Windows 2003.

Vous devez créer une entrée dans le Registre sous HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application Assurez-vous que le service réseau ou le compte que vous empruntez l'identité a l'autorisation de cette clé de Registre.

Lien de @ CheGueVerra: l'accès au registre demandé n'est pas autorisé

24
Aaron Fischer

J'ai copié cette réponse de ici (la question était Log4Net mais la réponse s'applique toujours). Le lien technet manque une étape vitale.

Créer une clé de registre

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP

Créez une valeur de chaîne à l'intérieur de ce

Nommez-le EventMessageFile, définissez sa valeur sur

C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll

Ce chemin semble fonctionner dans les environnements 64 bits et 32 ​​bits.

Avec cette technique, vous n'avez pas besoin de définir des autorisations dans le registre, et une fois la clé ci-dessus créée, elle devrait simplement fonctionner.

Alternativement
Si vous n'avez pas une grande batterie de serveurs mais juste un petit "jardin Web", vous pouvez exécuter une application console sur chaque serveur qui crée la source du journal des événements à l'aide de EventLog.CreateEventSource , assurez-vous que l'application console est exécutée par un administrateur.

37
Chris S

Faites un clic droit sur l'application et choisissez "Exécuter en tant qu'administrateur"

2
MacGyver