"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.

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

Mais une fois que je le publie sur Azure et surfe sur une action MVC, j'obtiens cette erreur:

Erreur du serveur dans L'Application'/'.

Erreur D'Exécution

Description: Une exception s'est produite lors du traitement de votre demande. En outre, une autre exception s'est produite lors de l'exécution de la coutume page d'erreur pour le première exception. La demande a été classée.

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());
    }
}

C'est ma toile.configuration:

<?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 une erreur.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 ne puis-je pas la reproduire localement?

81
demandé sur pnuts 2013-06-24 15:34:02

4 réponses

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

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

Commencez par deviner-vous avez des références (très probablement des références au SDK Azure) qui ne sont pas définies pour copier Local = true. Donc, toutes vos dépendances ne sont pas déployées.

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

Mise à jour: une deuxième option maintenant disponible dans VS2013 est débogage à distance d'un Service Cloud ou D'une Machine virtuelle.

183
répondu viperguynaz 2014-05-19 19:46:12

Je n'utilisais pas Azure, mais j'ai eu la même erreur localement. L'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 de ASP.NET qui contenait tous les détails dont j'avais besoin pour résoudre le problème.

4
répondu SharpC 2015-10-07 21:37:29

Si vous ajoutez ceci à votre site web.fichier de transformation de configuration, 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>
1
répondu Conner 2018-03-15 14:30:56

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

0
répondu Mike Godin 2018-03-08 18:19:16