Gestion personnalisée efficace des erreurs dans ASP.NET MVC en transmettant des données au contrôleur d'erreurs
Une gestion robuste des erreurs est essentielle pour une expérience utilisateur positive dans les applications ASP.NET MVC. Alors qu'un événement Application_Error
global dans Global.asax.cs
offre une gestion centralisée des erreurs, la transmission efficace des données pertinentes au contrôleur d'erreurs nécessite une approche stratégique.
Cet exemple utilise des chaînes de requête pour transmettre les informations d'erreur au contrôleur d'erreur, évitant ainsi le besoin de plusieurs routes d'erreur. Le gestionnaire Application_Error
est modifié pour rediriger vers l'action appropriée dans le contrôleur d'erreur, intégrant le message d'erreur dans la chaîne de requête :
<code class="language-csharp">protected void Application_Error(object sender, EventArgs e) { Exception exception = Server.GetLastError(); Response.Clear(); HttpException httpException = exception as HttpException; if (httpException != null) { string action; switch (httpException.GetHttpCode()) { case 404: action = "NotFound"; break; case 500: action = "ServerError"; break; default: action = "GenericError"; break; } Server.ClearError(); // Clear the server-side error Response.Redirect(String.Format("~/Error/{0}?message={1}", action, Server.UrlEncode(exception.Message))); } }</code>
Les actions du contrôleur d'erreur correspondantes sont ensuite mises à jour pour récupérer le message de la chaîne de requête :
<code class="language-csharp">// GET: /Error/NotFound public ActionResult NotFound() { string message = Request.QueryString["message"]; ViewBag.Message = message; // Or use a ViewModel return View(); }</code>
Cette méthode simplifie la gestion des erreurs en tirant parti du routage existant. Cependant, il est crucial de prendre en compte les implications potentielles en termes de performances, en particulier dans les environnements à fort trafic, car une utilisation répétée pourrait avoir un impact sur l'efficacité en raison de facteurs tels que la gestion des objets de session. Un examen attentif et une optimisation sont nécessaires pour les déploiements en production.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!