Gestion personnalisée des erreurs dans ASP.NET MVC : événement Application_Error dans Global.asax
Dans les applications ASP.NET MVC, l'événement Application_Error dans Global.asax est crucial pour gérer les exceptions non gérées et fournir des pages d'erreur personnalisées.
Transmettre les données au contrôleur d'erreurs
Le code actuel dans l'événement Application_Error détermine le code d'état HTTP et définit l'objet RouteData à transmettre au contrôleur d'erreur. Cependant, le code ne permet pas de transmettre les détails de l'exception au contrôleur.
Une approche robuste consiste à utiliser des paramètres de chaîne de requête pour transmettre des informations sur les exceptions. Le code Application_Error modifié est le suivant :
<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>
Contrôleur d'erreurs
Le contrôleur d'erreurs recevra le message d'exception en tant que paramètre de chaîne de requête :
<code class="language-csharp">// GET: /Error/HttpError404 public ActionResult HttpError404(string message) { return View("SomeView", message); }</code>
Remarques
Bien que cette approche permette une gestion flexible des exceptions, veuillez prendre en compte les points suivants :
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!