Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Pengendalian Ralat Tersuai dengan Butiran Pengecualian dalam ASP.NET MVC?
Pengendalian ralat tersuai dalam ASP.NET MVC: acara Application_Error dalam Global.asax
Dalam aplikasi ASP.NET MVC, acara Application_Error dalam Global.asax adalah penting untuk mengendalikan pengecualian yang tidak dikendalikan dan menyediakan halaman ralat tersuai.
Haruskan data kepada pengawal ralat
Kod semasa dalam acara Application_Error menentukan kod status HTTP dan menetapkan objek RouteData untuk dihantar kepada pengawal Ralat. Walau bagaimanapun, kod itu tidak menyediakan cara untuk menghantar butiran pengecualian kepada pengawal.
Pendekatan yang mantap ialah menggunakan parameter rentetan pertanyaan untuk menghantar maklumat pengecualian. Kod Application_Error yang diubah suai adalah seperti berikut:
<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>
Pengawal Ralat
Pengawal ralat akan menerima mesej pengecualian sebagai parameter rentetan pertanyaan:
<code class="language-csharp">// GET: /Error/HttpError404 public ActionResult HttpError404(string message) { return View("SomeView", message); }</code>
Nota
Walaupun pendekatan ini membenarkan pengendalian pengecualian yang fleksibel, sila pertimbangkan perkara berikut:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pengendalian Ralat Tersuai dengan Butiran Pengecualian dalam ASP.NET MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!