L'écriture d'un journal des événements dans ASP.NET sur Windows Server 2008 IIS7
Je suis en train d'utiliser log4net à écrire à un client journal des événements sous IIS7 sur Windows Server 2008 SP1. Toutefois, il ne semble pas avoir d'accès en écriture dans le journal des événements. Quelqu'un aurait-il des suggestions?
Vous devez vous connecter pour publier un commentaire.
Le problème est probablement votre source de l'événement. Vous devez créer une source de l'événement avant que vous pouvez écrire dans le journal des événements (si vous ne le faites pas, le journal des Événements de l'objet essaie d'en créer un pour vous "automagiquement" la première fois que vous écrivez dans le journal).
Vous devez avoir décuplées autorisations pour créer une source de journal des événements. Dans certaines de mes applications web, j'ai mis le code pour créer la source de l'événement dans ma configuration (le programme d'installation s'exécute en tant qu'administrateur, donc je suis toujours la garantie d'être en mesure de créer de la source).
Vous avez juste à créer la source une fois. Après cela, votre ASP.Net app doit avoir les autorisations suffisantes pour écrire des entrées spécification de la source (ou les sources) que vous avez créé.
Vous pouvez utiliser EventLogInstaller dans votre programme d'installation pour créer la source, ou vous pouvez simplement écrire un petit utilitaire pour appeler le Journal des événements.CreateEventSource() en tant qu'administrateur.
Je vais vous montrer deux façons:
Méthode 2: il suffit d'appeler CreateEventSource une fois en tant qu'admin (vous pouvez mettre le code suivant dans une application console, par exemple, et d'exécuter l'application console en tant qu'administrateur
Bonus:
Si vous avez Powershell installé sur votre serveur, vous pouvez le faire à partir de l'invite de commande Powershell:
(Assurez-vous que vous êtes l'exécution de Powershell en tant qu'administrateur)
Hop, qui permet de
Donner l'ASPNET la permission de le journal des événements.
Exécuter -> regedit - > Parcourir pour
À droite, cliquez sur sélectionnez les autorisations et donner le compte ASPNET le plein contrôle
IIS 8 autorisation de résolution de réponse
Que je suis paresseux, et ne pas créer un journal spécial dans mon code, au lieu de cela, j'ai utilisé:
Juste pour compléter la réponse de Michael
Dans IIS8 l'utilisateur utilisé par le serveur IIS lors de l'exécution côté serveur code est : IIS_IUSRS
(en fait son plus compliqué parce qu'il y a des comptes virtuels dans IIS_IUSRS mais ils obtenir les autorisations à partir de ce compte, voir IIS_IUSRS et IUSR autorisations dans IIS8 forme plus de détails)
Que l'utilisateur ne requiert l'autorisation de LECTURE sur ce nœud de registre:
La raison pour cela est que, lorsqu'une nouvelle source de journal est écrit à, avant de le créer, le système veut vérifier qu'il n'existe pas, donc il a besoin de LIRE les noms de source.
Aussi, si vous utilisez iis express de visual studio, ce sera sous vos informations d'identification personnelle, donc si vous n'avez pas accès en lecture du nœud de registre ci-dessus, vous aurez besoin de l'ajouter, lorsque le débogage sous visual studio.
(Si les administrateurs de l'autorisation pour le nœud et vos sont dans ce groupe, il n'est pas suffisant, vous devez exécuter visual studio "en tant qu'administrateur" - qui fonctionne uniquement à partir de visual studio raccourci, pas la sln raccourci)
Une autre remarque: Si l'ordinateur est dans un domaine et que vous ne pouvez pas trouver le IIS_IUSRS compte lors de la modification des autorisations de registre, il est probable que vous êtes à la recherche dans le mauvais emplacement, recherche pour le compte sur le domaine active directory au lieu de l'ordinateur local)
Je pense qu'une option plus sûre pour @Michael Kniskern est un bon exemple est le suivant:
regedit...
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\Eventlog
\your_new_application_log
Donne le plein contrôle de simplement le spécifique journal d'application créés pour les besoins de votre application (dans cet exemple, cliquez-droit sur your_new_application_log et de définir des autorisations là). Une fois le nouveau nom du journal est créé, il apparaît dans le registre de l'imbriquer dans le journal des événements d'un noeud comme ci-dessus.