โดยปกติหลังจากที่เว็บแอปพลิเคชันเปิดตัว เพื่อให้ผู้ใช้มีอินเทอร์เฟซที่เป็นมิตรและประสบการณ์ผู้ใช้ มันจะข้ามไปยังหน้าข้อผิดพลาดที่กำหนดเองเมื่อมีข้อผิดพลาดเกิดขึ้น แทนที่จะเป็นรายการข้อยกเว้นโดยละเอียดที่ ASP.NET เปิดเผยต่อผู้ใช้
หน้าการจัดการข้อผิดพลาดอย่างง่ายสามารถตั้งค่าได้ผ่าน web.config
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<สถานะข้อผิดพลาด = "403" เปลี่ยนเส้นทาง = "NoAccess.htm" / >
<สถานะข้อผิดพลาด = "404" เปลี่ยนเส้นทาง = "FileNotFound.htm" />
</ข้อผิดพลาดแบบกำหนดเอง>
หากคุณต้องการแสดงสาเหตุของข้อผิดพลาดโดยทางโปรแกรม คุณสามารถทำได้ผ่านเหตุการณ์ Page_Error
อีกวิธีหนึ่งสามารถทำได้ผ่าน Global.asax ฉันคิดว่าวิธีนี้สะดวกกว่า นอกจากนี้ หากสามารถรวมกับเพจที่เป็นมิตรแยกกันมากขึ้นก็จะดูสะดวกสบายมากขึ้น
Global.asax (การบันทึกข้อผิดพลาดหากจำเป็น) เป็นโมฆะ Application_Error (ผู้ส่งวัตถุ EventArgs e)
-
ข้อยกเว้น objErr = Server.GetLastError().GetBaseException();
string error = "หน้าข้อยกเว้น: " + Request.Url.ToString() + "<br>";
ข้อผิดพลาด += "ข้อความข้อยกเว้น: " + objErr.Message + "<br>";
เซิร์ฟเวอร์ ClearError();
แอปพลิเคชัน ["ข้อผิดพลาด"] = ข้อผิดพลาด;
Response.Redirect("~/ErrorPage/ErrorPage.aspx");
-
ErrorPage.aspx
ป้องกันโมฆะ Page_Load (ผู้ส่งวัตถุ EventArgs e)
-
ErrorMessageLabel.Text = แอปพลิเคชัน ["ข้อผิดพลาด"].ToString();
}เมื่อผู้ใช้ใช้แอปพลิเคชัน พวกเขาอาจไม่ต้องการทราบสาเหตุของข้อผิดพลาด ในขณะนี้ เราสามารถใช้ช่องทำเครื่องหมายเพื่อพิจารณาว่าจะแสดงสาเหตุของข้อผิดพลาดหรือไม่ คุณสามารถใส่ป้ายกำกับใน div จากนั้นใช้ช่องทำเครื่องหมายเพื่อตัดสินใจว่าจะแสดง div หรือไม่
<script language="javascript" type="text/javascript">
<!--
ฟังก์ชั่น CheckError_onclick() {
var chk = document.getElementById("CheckError");
var divError = document.getElementById("errorMsg");
ถ้า (ตรวจสอบแล้ว)
-
divError.style.display = "อินไลน์";
-
อื่น
-
divError.style.display = "ไม่มี";
-
}
// -->
</script>
http://www.cnblogs.com/EasyLive2006/archive/2007/01/07/613922.html