Benutzerdefinierte Fehlerbehandlung in ASP.NET MVC: Application_Error-Ereignis in Global.asax
In ASP.NET MVC-Anwendungen ist das Application_Error-Ereignis in Global.asax von entscheidender Bedeutung für die Behandlung nicht behandelter Ausnahmen und die Bereitstellung benutzerdefinierter Fehlerseiten.
Daten an Fehlercontroller übergeben
Der aktuelle Code im Application_Error-Ereignis bestimmt den HTTP-Statuscode und legt das RouteData-Objekt fest, das an den Error-Controller übergeben werden soll. Der Code bietet jedoch keine Möglichkeit, die Ausnahmedetails an den Controller zu übergeben.
Ein robuster Ansatz besteht darin, Abfragezeichenfolgenparameter zum Übertragen von Ausnahmeinformationen zu verwenden. Der geänderte Application_Error-Code lautet wie folgt:
<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>
Fehlercontroller
Der Fehlercontroller empfängt die Ausnahmemeldung als Abfragezeichenfolgenparameter:
<code class="language-csharp">// GET: /Error/HttpError404 public ActionResult HttpError404(string message) { return View("SomeView", message); }</code>
Notizen
Während dieser Ansatz eine flexible Ausnahmebehandlung ermöglicht, beachten Sie bitte Folgendes:
Das obige ist der detaillierte Inhalt vonWie kann ich eine benutzerdefinierte Fehlerbehandlung mit Ausnahmedetails in ASP.NET MVC implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!