118 votes

"Une exception s'est produite lors du traitement de votre demande. De plus, une autre exception s'est produite lors de l'exécution de la page d'erreur personnalisée..."

J'essaie de publier un site web MVC en tant que webrole Azure.

Lorsque je l'exécute localement, tout fonctionne bien.

Mais une fois que je l'ai publié sur Azure et que j'ai surfé sur une action MVC, j'obtiens cette erreur :

Erreur de serveur dans l'application '/'.

Erreur d'exécution

Description : Une exception s'est produite lors du traitement de votre demande. De plus, une autre exception s'est produite lors de l'exécution de la page d'erreur personnalisée pour la première exception. personnalisée pour la première exception. La demande a été interrompue.

Je ne comprends pas comment le gestionnaire d'erreurs peut rencontrer une exception, car les erreurs sont traitées de la manière par défaut :

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }
}

Voici mon web.config :

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.web>
        <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>

    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

C'est Error.cshtml :

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

<h2>
    Sorry, an error occurred while processing your request.
</h2>

Qu'est-ce qui peut causer cette exception, et pourquoi je ne peux pas la reproduire localement ?

243voto

viperguynaz Points 4702

Tout d'abord, définissez customErrors = "Off" dans le web.config et redéployez pour obtenir un message d'erreur plus détaillé qui nous aidera à diagnostiquer le problème. Vous pouvez également vous connecter en mode RDP à l'instance et naviguer sur le site à partir d'IIS en local pour afficher les erreurs.

<system.web>
      <customErrors mode="Off" />

Première supposition : vous avez des références (très probablement des références Azure SDK) qui ne sont pas configurées avec Copy Local = true. Ainsi, toutes vos dépendances ne sont pas déployées.

Trouvez d'abord l'erreur détaillée et mettez votre question à jour.

MISE À JOUR : une deuxième option est maintenant disponible dans VS2013. Débogage à distance d'un service en nuage ou d'une machine virtuelle .

10voto

SharpC Points 488

Je n'utilisais pas Azure, mais j'ai eu la même erreur localement. Utilisation de <customErrors mode="Off" /> semblait n'avoir aucun effet, mais la vérification des journaux d'application dans l'Observateur d'événements a révélé un avertissement d'ASP.NET qui contenait tous les détails dont j'avais besoin pour résoudre le problème.

7voto

Conner Points 23

Si vous l'ajoutez à votre fichier de transformation web.config, vous pouvez également définir certaines options de publication pour que le débogage soit activé ou désactivé :

<system.web>
    <customErrors mode="Off" defaultRedirect="~/Error.aspx" xdt:Transform="Replace"/>
</system.web>

3voto

Mike Godin Points 303

J'ai eu ce problème uniquement avec redirectMode="ResponseRewrite" ( redirectMode="ResponseRedirect" a bien fonctionné) et aucune des solutions ci-dessus ne m'a aidé à résoudre le problème. Cependant, une fois que j'ai changé le "Managed Pipeline Mode" du pool d'applications du serveur de "Classic" à "Integrated", la page d'erreur personnalisée est apparue comme prévu.

3voto

ASPaiva Points 87

Lors de la publication sur IIS, par Web Deploy, Je viens de vérifier le site Options de publication des fichiers et exécuté. Maintenant ça marche ! Après ce déploiement, les cases à cocher n'ont plus besoin d'être cochées. Je ne pense pas que cela puisse être une solution pour tout le monde, mais c'est la seule chose que j'ai dû faire pour résoudre mon problème. Bonne chance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X