La vue 'Erreur' ou son maître n'a pas été trouvé

j'ai passé beaucoup de temps à essayer de trouver une solution à ce problème sans résultat, donc j'ai pensé que je verrais si quelqu'un ici a une idée.

j'utilise Elmah dans mon ASP.NET MVC3 application . J'utilise le code exact de la réponse acceptée dans le lien précédent.

j'ai aussi ce code dans mon Global.asax pour afficher des pages d'erreur avec la réponse HTTP correcte:

    /// <summary>
    /// The customErrors functionality provided by ASP.NET results in HTTP 302 redirects occurring which doesn't accurately reflect what the real HTTP code of the response was.
    /// This method can be used to handle specific HTTP codes without an intermediate redirect.
    /// </summary>
    protected void Application_Error() {
        var exception = Server.GetLastError();
        var httpException = exception as HttpException;
        Response.Clear();
        Server.ClearError();
        var routeData = new RouteData();
        routeData.Values["controller"] = "Error";
        routeData.Values["action"] = "Error500";
        Response.StatusCode = 500;

        if (httpException != null) {
            Response.StatusCode = httpException.GetHttpCode();
            Response.TrySkipIisCustomErrors = true;
            switch (Response.StatusCode) {
                case 403:
                    routeData.Values["action"] = "Error403";
                    break;
                case 404:
                    routeData.Values["action"] = "Error404";
                    routeData.Values["message"] = httpException.Message;
                    break;
                case 500:
                    routeData.Values["action"] = "Error500";
                    break;
            }
        }

        IController errorsController = new ErrorController();
        var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
        errorsController.Execute(rc);
    }

le le problème se produit quand je ne suis pas sur ma machine (locale) de développement (qui au départ m'a fait penser qu'il était customErrors liés). Lorsqu'une exception est levée, Elmah gère l'erreur et l'enregistre correctement. Je finis aussi sur la page d'erreur correcte. Cependant, avant de finir sur la page d'erreur correcte, je peux voir une autre exception intermédiaire être enregistré:

The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Articles/Error.aspx ~/Views/Articles/Error.ascx ~/Views/Shared/Error.aspx ~/Views/Shared/Error.ascx ~/Views/Articles/Error.cshtml ~/Views/Articles/Error.vbhtml ~/Views/Shared/Error.cshtml ~/Views/Shared/Error.vbhtml

ASP.NET essaie de charger une page d'erreur par défaut même si j'essaie de le gérer. Quelqu'un a-t-il une idée pour empêcher cela?

32
demandé sur Community 2012-04-18 01:20:41

5 réponses

N'appelez pas la méthode base.OnException(context); dans votre gestionnaire d'erreurs personnalisé qui dérive de HandleErrorAttribute . Vous n'en avez plus besoin car vous avez implémenté un traitement d'erreur personnalisé dans Application_Error .

28
répondu Darin Dimitrov 2012-04-18 06:36:34

j'avais ce même problème, mais je n'exécutais pas la base.OnException() n'importe où. Une autre solution possible était de supprimer cela de <system.web> dans mon web.config:

<customErrors mode="On" />
12
répondu josh-sachs 2013-10-01 16:07:54

quelque part votre site essaie de naviguer vers ~/Error et il ne peut pas le trouver parce qu'il n'existe pas.

essayer de supprimer ou de désactiver customErrors dans votre Web.config. Je suis prêt à être son ensemble à la valeur par défaut de sur et rediriger vers ~ / erreur

si vous voulez poster votre Web.config (en omettant toute information à caractère sensible), je peux sans doute vous aider. J'ai fait affaire avec des problèmes similaires avec Elmah récemment.

3
répondu Terry 2012-04-17 21:39:32

si vous utilisez Elmah.MVC et que vous voulez utiliser des pages d'erreur personnalisées, il suffit de changer la valeur ci-dessous à true dans votre Web.config:

<add key="elmah.mvc.disableHandleErrorFilter" value="true" />

cela maintiendra la journalisation D'Elmah activée mais l'empêchera d'essayer de rediriger vers la page d'erreur par défaut.

1
répondu CapnChaos 2018-04-13 18:32:37

si vous utilisez Elmah.mvc, puis il aidera à changer ces paramètres à true:

<add key="elmah.mvc.disableHandler" value="true" />
<add key="elmah.mvc.disableHandleErrorFilter" value="true" />
0
répondu Peter 2018-01-11 11:26:47