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");
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é
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.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP
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.
Faites un clic droit sur l'application et choisissez "Exécuter en tant qu'administrateur"