web-dev-qa-db-fra.com

Impossible d'accéder à / elmah sur le serveur de production avec Elmah MVC?

J'ai installé le paquet de nuget elmah.mvc et conservé la configuration par défaut de ce sans configurer l'envoi d'un e-mail et le brancher dans une base de données SQL.

Sur ma machine locale lorsque j'utilise l'hôte Visual Studio, je peux ouvrir mon application et accéder à/elmah très bien pour voir un rapport des erreurs. Cependant, lorsque j'essaie d'accéder à/elmah en production, j'obtiens deux erreurs, d'abord j'obtiens un 403 access is denied erreur du serveur. Ensuite, dans mon e-mail (d'Elmah), je reçois:

System.Web.HttpException: Server cannot set status after HTTP headers have been sent.

Quelqu'un sait ce qui se passe ici et comment y remédier? Merci.

J'ai essayé ce qui suit dans la mesure suggérée par les réponses ci-dessous:

Dans <system.webServer>

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

Et en <system.web>

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

J'ai essayé de définir le chemin d'accès aux deux elmah.axd et simplement ~/elmah. Tous donnent toujours la même erreur et fonctionnent toujours localement, mais pas en production.

Edit: Cela fonctionne également lorsque je me connecte au serveur et y accède via un navigateur (pas en utilisant localhost, mais l'adresse réelle du site). Alors, quelle permission n'ai-je pas? On dirait que c'est au niveau du serveur.

55
SventoryMang

Vous devez activer Elmah pour l'accès à distance en ajoutant le paramètre de configuration suivant au <elmah> section dans votre fichier web.config. Le paramètre par défaut de cette valeur est false, ce qui n'autorise que localhost, d'où la raison pour laquelle il fonctionne sur votre ordinateur local à partir de Visual Studio.

   <elmah>
      <security allowRemoteAccess="true"/>
   </elmah>

J'ai toujours l'impression de l'oublier moi-même et de passer quelques minutes à me gratter la tête;)

118
Paige Cook

Assurez-vous que HttpHandler est défini dans la section webServer de votre fichier web.config.

<system.webServer>
  <httpHandlers>
    <add name="elmah" verb="GET" path="elmah.axd"  type="Elmah.ErrorLogPageFactory, Elmah"/>
  </httpHandlers>
</system.webServer>
1
scottm