2010-07-23 7 views
1

J'ai un service Web .NET qui essaie de se connecter au journal des événements Windows. Cependant, lorsque je tente d'envoyer une requête SOAP à une méthode Web dans ce service web, je reviens cette erreur dans la réponse SOAP:"Impossible d'ouvrir le journal pour la source" - Windows 7 - service Web .NET - journal des événements

System.InvalidOperationException: Impossible d'ouvrir le journal pour la source « MySource ». Vous ne pouvez pas avoir accès en écriture. ---> System.ComponentModel.Win32Exception: L'accès est refusé

J'ai essayé de chercher une solution dans Googling. This one décrit la modification d'une clé de registre qui n'existe pas pour moi dans Windows 7 64 bits; Idem pour this Microsoft page. This question est liée mais la seule réponse à cela parle d'une clé 'Source' qui ne semble pas être n'importe où dans HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ eventlog \ MySource. Si j'ai besoin d'ajouter une clé source, quelle doit être sa valeur? J'utilise l'emprunt d'identité dans Web.config de mon service Web (<identity impersonate="true" />). This question est également liée mais n'a pas de réponses. This question est lié mais sa réponse ne semble pas se rapporter à la configuration du Registre dans Windows 7.

J'ai les deux <authentication mode="Windows" /> et <identity impersonate="true" /> dans mon Web.config. Cependant, même lorsque je supprime <authentication mode="Windows" />, l'erreur "Impossible d'ouvrir le journal pour la source" s'affiche toujours.

Répondre

0

Voir ici:

http://msdn.microsoft.com/en-us/library/x7y6sy21.aspx

Remarque

Pour créer une source d'événements dans Windows Vista, Windows XP Professionnel ou Windows Server 2003, vous devez avoir privilèges administratifs.

La raison de cette exigence est que tous les journaux d'événements, y compris la sécurité, doivent être recherchés pour déterminer si la source d'événement est unique. Dans Windows Vista, les utilisateurs n'ont pas l'autorisation d'accéder au journal de sécurité. par conséquent, une exception SecurityException est levée. Sous Windows Vista, le contrôle de compte d'utilisateur (UAC) détermine les privilèges d'un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, vous disposez de deux jetons d'accès au moment de l'exécution: un jeton d'accès utilisateur standard et un jeton d'accès administrateur. Par défaut, vous êtes dans le rôle utilisateur standard. Pour exécuter le code qui accède au journal de sécurité, vous devez d'abord élever vos privilèges de l'utilisateur standard à l'administrateur. Vous pouvez le faire lorsque vous démarrez une application en cliquant avec le bouton droit sur l'icône de l'application et en indiquant que vous souhaitez exécuter en tant qu'administrateur.


Solution: Vous devez configurer la source de journal à l'aide d'un installateur ou utilitaire qui fonctionne en tant qu'administrateur. En cas de doute, utilisez simplement le même code que celui que vous utilisez dans votre service Web pour consigner un message 'Installation Utility Completed'.

(Vous devriez pas exécuter le service Web avec des privilèges d'administrateur)

Hope that helps!

+1

Je ne pense pas que ce soit le problème. Les sources existent déjà sur mon ordinateur, donc mon code n'essaie pas de créer de nouvelles sources, il essaie juste d'écrire sur les sources existantes. –

+0

Pourriez-vous poster votre code, et une trace de pile pour l'exception s'il vous plaît? –

1

J'avais exactement le même problème sous Windows 7 64 bits pour mon application Web ASP classique.J'ai finalement trouvé qu'en changeant le pool d'applications pour ce site Web à "Activer les applications 32 bits" (cliquez avec le bouton droit sur le pool d'applications, les paramètres avancés), le problème a disparu.

Questions connexes