Utilisez l'événement Application_Error de Global.asax pour implémenter une gestion personnalisée des erreurs dans ASP.NET MVC
L'événement Application_Error dans le fichier Global.asax dans ASP.NET MVC permet aux développeurs de gérer les exceptions et les erreurs non gérées dans l'application. Une pratique courante consiste à rediriger les utilisateurs vers une page d'erreur spécifique en fonction du code d'état HTTP de l'erreur.
Pour ce faire, vous pouvez modifier le gestionnaire d'événements Application_Error comme suit :
<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 = "HttpError404"; break; case 500: // 服务器错误 action = "HttpError500"; break; default: action = "General"; break; } // 清除服务器上的错误 Server.ClearError(); Response.Redirect(String.Format("~/Error/{0}/?message={1}", action, exception.Message)); } }</code>
Dans ce code amélioré, nous redirigeons directement vers le contrôleur/l'action et transmettons les détails de l'erreur en tant que paramètres de chaîne de requête au lieu de créer une nouvelle route pour le contrôleur d'erreur. Le contrôleur d'erreur recevra alors le message et l'affichera en utilisant la vue spécifiée dans la méthode d'action.
<code class="language-csharp">// GET: /Error/HttpError404 public ActionResult HttpError404(string message) { return View("SomeErrorView", message); }</code>
Cette approche simplifie la gestion des erreurs et évite le besoin d'un routage supplémentaire. Cependant, il existe des compromis à prendre en compte, par exemple des problèmes de performances peuvent survenir s'il y a un grand nombre de boucles ou de créations de sessions lors de la gestion des erreurs.
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!