2010-01-09 6 views
3

je dois montrer la page d'erreur en utilisant CustomError sur web.configpage d'erreur personnalisée dans mvc

Mais watever l'erreur peut-être, même dans web.config i spécifié une mauvaise version aussi besoin pour afficher la page d'erreur,

Comment puis-je faire cela. J'ai essayé, mais url redirige vers

"http://localhost:1966/Error.html?aspxerrorpath=Error.html" 

CustomError Tag:

<customErrors mode="On" defaultRedirect="Error.html" /> 

Et montre une autre page d'erreur de mvc, pas de mines.

+0

Erreur Redirect ne fonctionne que dans mon IIS pas dans le serveur local VS dev. – Santhosh

Répondre

7

Dans ASP.NET MVC, la gestion des erreurs est normalement spécifiée à l'aide de l'attribut HandleError. Par défaut, il utilise une vue nommée 'Erreur' pour afficher la page d'erreur personnalisée. Si vous souhaitez simplement personnaliser cette vue, vous pouvez modifier Views/Shared/Error.aspx.

Si vous souhaitez une vue différente dans des cas particuliers, vous pouvez fournir explicitement la propriété View.

Voici un exemple d'une action de contrôleur avec une erreur personnalisée Vue:

[HandleError(View = "CustomError")] 
public ViewResult Foo() 
{ 
    // ... 
} 

Pour erreur globale dans le traitement ASP.NET MVC, voir this post.

1

Vous pouvez utiliser la solution comme indiqué ci-dessus HandleError attrib.

Une autre solution pour intercepter les erreurs est d'avoir un baseclass dont dérive toute la classe du contrôleur. Et à l'intérieur de la méthode OnException baseclass ovveride pour afficher une vue d'erreur conviviale que vous avez par exemple "~/Shared/Error.aspx"

Vous devez également avoir <customErrors mode="On" > défini dans votre web.config racine pour cette solution travail. La solution ci-dessus capte la plus grande partie possible des "erreurs d'écran jaune des erreurs de mort" qui se produisent.

Pour les autres erreurs comme 404 i utiliser folowing MAPROUTE dernier RegisterRoutes de global.asax (routes RouteCollection)

// Show a 404 error page for anything else. 
      routes.MapRoute(
       "Error", 
       "{*url}", 
       new { controller = "Shared", action = "Error" } 
      ); 
Questions connexes