2010-03-25 3 views
2

J'ai un problème avec un site WCF (.Net 3.5) utilisant ELMAH sur IIS 7.5. Tel est le message d'exception:SecurityException après l'ajout d'ELMAH au projet WCF

System.Security.SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 

Pour vérifier que c'était la combinaison de WCF et ELMAH sur IIS7.5, j'ai créé un nouveau projet de service WCF dans VS2008 et une nouvelle application dans le site IIS 7.5. Je l'ai publié et je me suis assuré que tout allait bien. Puis j'ai ajouté la DLL ELMAH. Toujours d'accord. Puis ajouté les références de configSection ELMAH à Web.config. Toujours d'accord. Puis j'ai ajouté les trucs ELMAH à httpHandlers et httpModules dans system.web (oui, je sais que ce n'est pas pour 7.5). Toujours d'accord. Puis j'ai ajouté ceci aux gestionnaires et aux modules dans le system.webServer:

<handlers> 
    : 
    <add name="Elmah" verb="POST,GET,HEAD" 
     path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 

<modules> 
    : 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> 
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 

Et puis j'ai eu l'exception de sécurité. Je n'ai fait aucun autre changement de configuration.

Tout fonctionne en utilisant le serveur web VS dev. La machine de développement est 2008 R2 x64 avec VS 2008 SP1 installé. Le service WCF est construit pour x86 (parce que le projet d'origine était). ELMAH est la version .Net 3.5 x86. Le pool d'applications IIS7.5 est configuré pour autoriser 32 bits.

Une idée de ce que je dois faire pour que cela fonctionne?

Répondre

0

Vous devrez accéder à Ajouter un gestionnaire géré dans le Gestionnaire des services Internet pour votre répertoire Web virtuel.

  • Demande chemin sera: elmah.axd
  • type sera: Elmah.ErrorLogPageFactory, Elmah
  • Nom: Anything you want it to be identified with.

Remarque: Ce paramètre seront supprimés chaque fois que vous publiez des modifications de Visual Studio. Vous devrez donc l'ajouter à nouveau.

2

Dans mon cas, j'ai dû définir le "Load User Profile = True" dans le pool d'applications pour le faire fonctionner.

Étapes:

A partir de l'application liste des pools, accédez à Paramètres avancés, section du modèle de processus et un ensemble "Charger le profil de l'utilisateur" à "True".

+0

+1 Cela a fonctionné pour moi dans un projet .Net 3.5 sur IIS 7 utilisant ELMAH. – GregL

Questions connexes