ระดับหน้าของ ASP.NET Tracการดีบัก การจัดการข้อผิดพลาด

⚡ สรุปอย่างชาญฉลาด

การดีบัก ASP.NET tracการจัดการข้อผิดพลาดและการแสดงผลใน Visual Studio ช่วยให้นักพัฒนาสามารถตรวจจับปัญหาได้ตั้งแต่เนิ่นๆ และติดตามคำขอได้อย่างราบรื่น trace.axd และเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าแสดงข้อผิดพลาดที่กำหนดเองเมื่อเกิดข้อยกเว้นที่ไม่ได้จัดการในระหว่างวงจรการพัฒนาและการใช้งานจริง

  • 🐞 การแก้จุดบกพร่อง: เบรกพอยต์ใน Visual Studio จะหยุดการทำงานชั่วคราวเพื่อให้คุณสามารถตรวจสอบหน้าเว็บ ASP.NET ที่กำลังทำงานอยู่ทีละบรรทัดได้
  • 🔎 Tracไอเอ็นจี: การเปิดใช้งาน trace ใน web.config เพิ่ม trace.axd เป็นไฟล์ที่แสดงรายการคำขอทั้งหมด พร้อมรหัสสถานะและเวลาที่ใช้
  • 📄 หน้า Tracไอเอ็นจี: เพิ่ม Tracการตั้งค่า e=”true” ในคำสั่ง Page จะแสดงจังหวะเวลาของวงจรชีวิตสำหรับหน้าเว็บเดียว
  • 🚧 ข้อผิดพลาดที่กำหนดเอง: แท็ก customErrors จะนำผู้ใช้ไปยังหน้าแสดงข้อผิดพลาดที่เป็นมิตรเมื่อแอปพลิเคชันทำงานล้มเหลว
  • 🧭 ข้อผิดพลาดที่ไม่ได้จัดการ: ฟังก์ชัน Application_Error ในไฟล์ Global.asax จะดักจับข้อผิดพลาดที่ไม่คาดคิดและเปลี่ยนเส้นทางไปยังหน้าเว็บที่ปลอดภัย
  • 🗃️ การบันทึกข้อผิดพลาด: การบันทึกรายละเอียดจาก Server.GetLastError ลงในไฟล์จะช่วยบันทึกปัญหาไว้สำหรับการตรวจสอบแก้ไขข้อผิดพลาดในภายหลัง

ระดับหน้า ASP.NET Tracการตรวจสอบ การดีบัก และการจัดการข้อผิดพลาด

ในแอปพลิเคชันใดๆ ข้อผิดพลาดจะเกิดขึ้นในระหว่างกระบวนการพัฒนา สิ่งสำคัญคือต้องสามารถค้นพบข้อผิดพลาดได้ตั้งแต่เนิ่นๆ

ใน Visual Studio สามารถทำเช่นนี้ได้สำหรับแอปพลิเคชัน ASP.NET Visual Studio ใช้สำหรับการดีบักและมีเทคนิคการจัดการข้อผิดพลาดสำหรับ ASP.NET

การดีบักใน ASP.NET คืออะไร

การแก้จุดบกพร่อง การเพิ่มเบรกพอยต์คือกระบวนการเพิ่มเบรกพอยต์ให้กับแอปพลิเคชัน เบรกพอยต์เหล่านี้ใช้เพื่อหยุดการทำงานของโปรแกรมชั่วคราว ซึ่งช่วยให้นักพัฒนาเข้าใจว่าเกิดอะไรขึ้นในโปรแกรม ณ จุดเวลาใดเวลาหนึ่ง

ลองยกตัวอย่างโปรแกรมหนึ่ง โปรแกรมแสดงข้อความ “เรากำลังดีบัก” ให้ผู้ใช้เห็น สมมติว่าเมื่อเรารันโปรแกรม ข้อความนั้นไม่แสดงขึ้นมาด้วยเหตุผลบางอย่าง เพื่อระบุปัญหา เราจำเป็นต้องเพิ่มเบรกพอยต์ เราสามารถเพิ่มเบรกพอยต์ในบรรทัดโค้ดที่แสดงข้อความนั้น เบรกพอยต์นี้จะหยุดการทำงานของโปรแกรมชั่วคราว ณ จุดนี้ โปรแกรมเมอร์สามารถดูได้ว่าอะไรอาจผิดพลาด โปรแกรมเมอร์จึงแก้ไขโปรแกรมตามนั้น

ในตัวอย่างนี้ เราจะใช้แอปพลิเคชันสาธิต (DemoApplication) ที่เราสร้างไว้ในบทก่อนหน้านี้ ในตัวอย่างต่อไปนี้ เราจะเห็น:

  • วิธีทำให้แอปพลิเคชันสาธิตแสดงสตริง
  • วิธีเพิ่มเบรกพอยต์ให้กับแอปพลิเคชัน
  • วิธีดีบักแอปพลิเคชันโดยใช้เบรกพอยต์นี้

วิธีการดีบักแอปพลิเคชันใน ASP.NET

ด้านล่างนี้คือขั้นตอนในการสร้างแอปพลิเคชันสาธิต เพิ่มจุดหยุดการทำงาน และดีบักใน ASP.NET:

ขั้นตอนที่ 1) เปิดแอปพลิเคชันใน Visual Studio
ขั้นแรก ตรวจสอบให้แน่ใจก่อนว่าแอปพลิเคชันเว็บของเราเปิดอยู่ใน Visual Studio แล้ว ตรวจสอบให้แน่ใจว่า DemoApplication เปิดอยู่ใน Visual Studio

ดีบักแอปพลิเคชันใน ASP.NET

ขั้นตอนที่ 2) ตอนนี้เปิดไฟล์ Demo.aspx.cs และเพิ่มบรรทัดโค้ดด้านล่าง

  • เราเพิ่งเพิ่มบรรทัดโค้ด Response.Write เพื่อแสดงสตริง
  • ดังนั้นเมื่อแอปพลิเคชันทำงาน ควรแสดงสตริง “เรากำลังแก้ไขจุดบกพร่อง” ในเว็บเบราว์เซอร์

ดีบักแอปพลิเคชันใน ASP.NET

namespace DemoApplication
{
    public partial class Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("We are debugging");
        }
    }
}

ขั้นตอนที่ 3) เพิ่มจุดหยุดการทำงาน (breakpoint) ให้กับแอปพลิเคชัน
จุดพักคือจุดใน Visual Studio ที่คุณต้องการให้หยุดการดำเนินการโปรแกรม

ดีบักแอปพลิเคชันใน ASP.NET

  1. ในการเพิ่มเบรกพอยต์ คุณต้องคลิกที่คอลัมน์ที่คุณต้องการแทรกเบรกพอยต์ ในกรณีของเรา เราต้องการให้โปรแกรมหยุดที่บรรทัดโค้ด “Response.Write” คุณไม่จำเป็นต้องเพิ่มคำสั่งใดๆ เพื่อเพิ่มเบรกพอยต์ เพียงแค่คลิกที่บรรทัดที่คุณต้องการเพิ่มเบรกพอยต์เท่านั้น
  2. เมื่อเสร็จแล้ว คุณจะสังเกตเห็นว่าโค้ดถูกทำเครื่องหมายเป็นสีแดง นอกจากนี้ ฟองอากาศสีแดงจะปรากฏขึ้นในคอลัมน์ถัดจากบรรทัดโค้ด

หมายเหตุ คุณสามารถเพิ่มจุดหยุดการทำงานหลายจุดในแอปพลิเคชันได้

ขั้นตอนที่ 4) เรียกใช้งานแอปพลิเคชันในโหมดดีบัก
ตอนนี้คุณต้องเรียกใช้แอปพลิเคชันของคุณโดยใช้โหมดดีบัก ใน Visual Studio เลือกตัวเลือกเมนู Debug->Start Debugging

ดีบักแอปพลิเคชันใน ASP.NET

ผลลัพธ์:-

ดีบักแอปพลิเคชันใน ASP.NET

เมื่อคุณทำตามขั้นตอนทั้งหมดอย่างถูกต้อง โปรแกรมจะทำงานผิดพลาด Visual Studio จะไปที่จุดหยุดการทำงานและทำเครื่องหมายบรรทัดโค้ดเป็นสีเหลือง

ตอนนี้หากโปรแกรมเมอร์รู้สึกว่าโค้ดไม่ถูกต้อง การดำเนินการก็สามารถหยุดได้ รหัสนั้นสามารถแก้ไขได้ตามนั้น หากต้องการดำเนินโปรแกรมต่อ โปรแกรมเมอร์ต้องคลิกปุ่ม F5 บนแป้นพิมพ์

ความหมายของ Tracใช้งานใน ASP.NET ใช่ไหม?

การใช้งาน tracไอเอ็นจี ช่วยให้ตรวจสอบได้ว่ามีหน้าเว็บใดบ้างที่ร้องขอแล้วเกิดข้อผิดพลาด เมื่อ tracเมื่อเปิดใช้งาน ing จะมีหน้าพิเศษที่เรียกว่า trace.axd ถูกเพิ่มเข้าไปในแอปพลิเคชันแล้ว (ดูภาพด้านล่าง) หน้าเว็บนี้เชื่อมต่อกับแอปพลิเคชันและจะแสดงคำขอทั้งหมดและสถานะของคำขอเหล่านั้น

Tracการใช้งานใน ASP.NET

วิธีเปิดใช้งาน Tracการสร้างแอปพลิเคชันใน ASP.NET

เรามาดูกันว่าจะเปิดใช้งานได้อย่างไร tracกำลังหา แอปพลิเคชัน ASP.NET:

ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตของเรากันเถอะ เปิดไฟล์ web.config จาก Solution Explorer

ทำให้สามารถ tracกำลังพัฒนาแอปพลิเคชันใน ASP.NET

ขั้นตอน 2) เพิ่มโค้ดบรรทัดต่อไปนี้ลงในไฟล์ web.config tracคำสั่ง e ใช้เพื่อเปิดใช้งาน tracสำหรับการสมัคร

  • ขีดจำกัดคำขอใน tracคำสั่ง e ระบุจำนวนคำขอหน้าเว็บที่ต้องดำเนินการ tracเอ็ด
  • ในตัวอย่างนี้ เรากำหนดขีดจำกัดไว้ที่ 40 เรากำหนดขีดจำกัดเพราะค่าที่สูงกว่านี้จะทำให้ประสิทธิภาพของแอปพลิเคชันลดลง

ทำให้สามารถ tracกำลังพัฒนาแอปพลิเคชันใน ASP.NET

<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <httpRuntime targetFramework="4.0" />

        <trace enabled="true" pageOutput="false" requestLimit="40" localOnly="false" />

    </system.web>
</configuration>

เรียกใช้งานแอปพลิเคชันสาธิตใน Visual Studio

ผลลัพธ์:-

ทำให้สามารถ tracกำลังพัฒนาแอปพลิเคชันใน ASP.NET

หากคุณเข้าชมเว็บไซต์ตอนนี้ URL http://localhost:53003/trace.axdคุณจะเห็นข้อมูลสำหรับแต่ละคำขอ ที่นี่คุณสามารถตรวจสอบได้ว่ามีข้อผิดพลาดใดเกิดขึ้นในแอปพลิเคชันหรือไม่ ข้อมูลประเภทต่อไปนี้จะแสดงบนหน้านี้:

  1. เวลาที่ขอหน้าเว็บ
  2. ชื่อของเว็บเพจที่กำลังร้องขอ
  3. รหัสสถานะของคำขอเว็บ (รหัสสถานะ 200 หมายความว่าคำขอสำเร็จ)
  4. ลิงก์ "ดูรายละเอียด" ช่วยให้คุณดูรายละเอียดเพิ่มเติมเกี่ยวกับการร้องขอเว็บได้ รายละเอียดที่สำคัญอย่างหนึ่งคือข้อมูลส่วนหัว ซึ่งแสดงข้อมูลที่ส่งในส่วนหัวของการร้องขอเว็บแต่ละครั้ง

ทำให้สามารถ tracกำลังพัฒนาแอปพลิเคชันใน ASP.NET

ระดับหน้า Tracการใช้งานใน ASP.NET

ระดับหน้า Tracไอเอ็นจี ใน ASP.NET จะแสดงข้อมูลทั่วไปทั้งหมดเกี่ยวกับหน้าเว็บขณะที่กำลังประมวลผล ซึ่งมีประโยชน์ในการแก้ไขข้อบกพร่องหากหน้าเว็บทำงานผิดปกติด้วยเหตุผลใดก็ตาม Visual Studio ให้ข้อมูลโดยละเอียดเกี่ยวกับแง่มุมต่างๆ ของหน้าเว็บ เช่น เวลาที่ใช้สำหรับแต่ละเมธอดที่ถูกเรียกใช้ในคำขอเว็บ

ตัวอย่างเช่น หากเว็บแอปพลิเคชันของคุณมีปัญหาด้านประสิทธิภาพ ข้อมูลนี้สามารถช่วยในการแก้ไขปัญหาได้ ข้อมูลนี้จะแสดงขึ้นเมื่อแอปพลิเคชันทำงานใน Visual Studio

วิธีเปิดใช้งาน Tracการทำงานที่ระดับหน้าใน ASP.NET

เรามาดูกันว่าจะเปิดใช้งานระดับหน้าได้อย่างไร tracสำหรับแอปพลิเคชัน ASP.NET:

ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตกันเลย เปิดไฟล์ demo.aspx จาก Solution Explorer

ระดับหน้า Tracการใช้งานใน ASP.NET

ขั้นตอน 2) เพิ่มโค้ดบรรทัดด้านล่างเพื่อเปิดใช้งานหน้าเว็บ tracในการประกาศหน้า ให้เพิ่มแอตทริบิวต์เข้าไป Trace=”true” บรรทัดโค้ดนี้จะอนุญาตให้มีการตั้งค่าระดับหน้า tracไอเอ็นจี

ระดับหน้า Tracการใช้งานใน ASP.NET

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" Trace="true" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

เรียกใช้แอพพลิเคชันใน Visual Studio

ผลลัพธ์:-

ระดับหน้า Tracการใช้งานใน ASP.NET

เมื่อแสดงหน้าเว็บ Demo.aspx คุณจะได้รับข้อมูลมากมายเกี่ยวกับหน้าเว็บ ข้อมูลเช่นเวลาสำหรับแต่ละแง่มุมของวงจรชีวิตของหน้าเว็บจะแสดงบนหน้านี้

การจัดการข้อผิดพลาด: การแสดงหน้าข้อผิดพลาดแบบกำหนดเอง

In ASP.NETคุณสามารถให้ผู้ใช้เห็นหน้าข้อผิดพลาดแบบกำหนดเองได้ หากแอปพลิเคชันมีข้อผิดพลาดใดๆ หน้าแบบกำหนดเองจะแสดงข้อผิดพลาดนั้นให้ผู้ใช้เห็น

ในตัวอย่างนี้ เราจะเริ่มจากการเพิ่มหน้า HTML ก่อน หน้านี้จะแสดงข้อความให้ผู้ใช้เห็นว่า “เรากำลังตรวจสอบปัญหาอยู่” จากนั้นเราจะเพิ่มโค้ดแสดงข้อผิดพลาดลงในหน้า demo.aspx เพื่อให้หน้าแสดงข้อผิดพลาดปรากฏขึ้น มาทำตามขั้นตอนด้านล่างกันเลย

ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตกันเถอะ เรามาเพิ่มหน้า HTML ลงในแอปพลิเคชันกัน

  1. คลิกขวาที่ DemoApplication ใน Solution Explorer
  2. เลือกตัวเลือกเมนู เพิ่ม -> หน้า HTML

การจัดการข้อผิดพลาดใน ASP.NET

ขั้นตอน 2) ในขั้นตอนถัดไป เราต้องระบุชื่อให้กับหน้า HTML ใหม่

  1. ตั้งชื่อว่า ErrorPage
  2. คลิกปุ่มตกลงเพื่อดำเนินการต่อ

การจัดการข้อผิดพลาดใน ASP.NET

ขั้นตอน 3) หน้าต่างแสดงข้อผิดพลาดจะเปิดขึ้นโดยอัตโนมัติใน Visual Studio หากคุณไปที่ Solution Explorer คุณจะเห็นไฟล์ที่ถูกเพิ่มเข้ามา

การจัดการข้อผิดพลาดใน ASP.NET

เพิ่มบรรทัดโค้ด “เรากำลังตรวจสอบปัญหาอยู่” ลงในหน้า HTML คุณไม่จำเป็นต้องปิดไฟล์ HTML ก่อนทำการเปลี่ยนแปลงไฟล์ web.config

การจัดการข้อผิดพลาดใน ASP.NET

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    We are looking into the problem
</body>
</html>

ขั้นตอน 4) ตอนนี้คุณต้องทำการเปลี่ยนแปลงในไฟล์ web.config การเปลี่ยนแปลงนี้จะแจ้งให้ทราบว่าเมื่อใดก็ตามที่เกิดข้อผิดพลาดในแอปพลิเคชัน หน้าข้อผิดพลาดที่กำหนดเองจะต้องแสดงขึ้น แท็ก customErrors อนุญาตให้กำหนดหน้าข้อผิดพลาดที่กำหนดเองได้ คุณสมบัติ defaultRedirect จะถูกตั้งค่าเป็นชื่อของหน้าข้อผิดพลาดที่กำหนดเองที่เราสร้างไว้ในขั้นตอนก่อนหน้านี้

การจัดการข้อผิดพลาดใน ASP.NET

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <httpRuntime targetFramework="4.0" />

        <customErrors mode="On" defaultRedirect="ErrorPage.html">
        </customErrors>

    </system.web>
</configuration>

ขั้นตอน 5) ต่อไปเรามาเพิ่มโค้ดที่ผิดพลาดลงในหน้า demo.aspx.cs กัน เปิดหน้านี้โดยการดับเบิ้ลคลิกไฟล์ใน Solution Explorer

การจัดการข้อผิดพลาดใน ASP.NET

เพิ่มโค้ดด้านล่างลงในไฟล์ Demo.aspx.cs

  • โค้ดเหล่านี้ถูกออกแบบมาเพื่ออ่านข้อความจากไฟล์
  • ไฟล์ดังกล่าวควรอยู่ในไดรฟ์ D โดยมีชื่อว่า Example.txt
  • แต่ในสถานการณ์ของเรา ไฟล์นี้ไม่มีอยู่จริง ดังนั้นรหัสนี้จะส่งผลให้เกิดข้อผิดพลาดเมื่อแอปพลิเคชันทำงาน

การจัดการข้อผิดพลาดใน ASP.NET

namespace DemoApplication
{
    public partial class Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            String path = @"D:\Example.txt";
            string[] lines;
            lines = File.ReadAllLines(path);
        }
    }
}

ตอนนี้รันโค้ดใน Visual Studio และคุณควรได้รับผลลัพธ์ด้านล่าง

ผลลัพธ์:-

การจัดการข้อผิดพลาดใน ASP.NET

หน้าเว็บด้านบนแสดงให้เห็นว่าเกิดข้อผิดพลาดขึ้นในแอปพลิเคชัน ส่งผลให้ผู้ใช้เห็นหน้า ErrorPage.html

ASP.NET ข้อยกเว้นที่ไม่สามารถจัดการได้

แม้ในสถานการณ์ที่ดีที่สุด ก็อาจมีข้อผิดพลาดที่คาดไม่ถึงเกิดขึ้นได้ สมมติว่าผู้ใช้เข้าชมหน้าเว็บผิดหน้าในแอปพลิเคชัน นี่เป็นสิ่งที่คาดเดาไม่ได้ ในกรณีเช่นนี้ ASP.NET สามารถเปลี่ยนเส้นทางผู้ใช้ไปยังไฟล์ ErrorPage.html ได้

เรามาดูตัวอย่างกันครับ

  • เราจะใช้แอปพลิเคชันสาธิตตัวเดิมที่มีไฟล์ ErrorPage.html อยู่
  • และเราจะพยายามดูหน้าเว็บที่ไม่มีอยู่ในแอปพลิเคชันของเรา
  • ในกรณีนี้ เราควรจะถูกเปลี่ยนเส้นทางไปยังหน้า ErrorPage.html ของเรา มาดูขั้นตอนในการทำเช่นนั้นกัน

ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตกันเลย เปิดไฟล์ Global.asax.cs จาก Solution Explorer

ASP.NET ข้อยกเว้นที่ไม่สามารถจัดการได้

หมายเหตุ ไฟล์ Global.asax.cs ใช้สำหรับเพิ่มโค้ดที่จะมีผลใช้ได้กับทุกหน้าในแอปพลิเคชัน

ขั้นตอน 2) เพิ่มโค้ดบรรทัดต่อไปนี้ลงในไฟล์ Global.asax.cs โค้ดเหล่านี้จะใช้ตรวจสอบข้อผิดพลาดและแสดงหน้า ErrorPage.html ตามความเหมาะสม

ASP.NET ข้อยกเว้นที่ไม่สามารถจัดการได้

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

            if (lastErrorWrapper.GetHttpCode() == 404)
                Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code คำอธิบาย:-

  1. บรรทัดแรกคือตัวจัดการเหตุการณ์ Application_Error เหตุการณ์นี้จะถูกเรียกใช้เมื่อใดก็ตามที่เกิดข้อผิดพลาดในแอปพลิเคชัน โปรดทราบว่าชื่อเหตุการณ์ต้องเป็น Application_Error และพารามิเตอร์ควรเป็นไปตามที่แสดงไว้ข้างต้น
  2. จากนั้นเราจะกำหนดอ็อบเจ็กต์ของชนิดคลาส HttpException ซึ่งเป็นอ็อบเจ็กต์มาตรฐานที่จะเก็บรายละเอียดทั้งหมดของข้อผิดพลาด จากนั้นเราจะใช้เมธอด Server.GetLastError เพื่อรับรายละเอียดทั้งหมดของข้อผิดพลาดครั้งล่าสุดที่เกิดขึ้นในแอปพลิเคชัน
  3. จากนั้นเราจะตรวจสอบว่ารหัสข้อผิดพลาดของข้อผิดพลาดล่าสุดคือ 404 หรือไม่ (รหัสข้อผิดพลาด 404 เป็นรหัสมาตรฐานที่แสดงเมื่อผู้ใช้เข้าชมหน้าเว็บที่ไม่พบ) หากรหัสข้อผิดพลาดตรงกัน เราจะโอนผู้ใช้ไปยังหน้า ErrorPage.html

ตอนนี้ลองรันโค้ดใน Visual Studio แล้วคุณจะได้ผลลัพธ์ดังต่อไปนี้

ผลลัพธ์:-

เรียกดูหน้า http://localhost:53003/Demo1.aspx- โปรดจำไว้ว่า Demo1.aspx ไม่มีอยู่ในแอปพลิเคชันของเรา จากนั้นคุณจะได้ผลลัพธ์ด้านล่าง

ข้อยกเว้นที่ไม่สามารถจัดการได้ใน ASP.NET

หน้าเว็บด้านบนแสดงให้เห็นว่าเกิดข้อผิดพลาดขึ้นในแอปพลิเคชัน ส่งผลให้ผู้ใช้เห็นหน้า ErrorPage.html

การบันทึกข้อผิดพลาดของ ASP.NET

การบันทึกข้อผิดพลาดของแอปพลิเคชันช่วยให้นักพัฒนาสามารถดีบักและแก้ไขข้อผิดพลาดได้ในภายหลัง ASP.NET มีฟังก์ชันในการบันทึกข้อผิดพลาด โดยจะทำในไฟล์ Global.asax.cs เมื่อตรวจพบข้อผิดพลาด ในระหว่างกระบวนการบันทึก ข้อความแสดงข้อผิดพลาดสามารถเขียนลงในไฟล์บันทึกได้

เรามาดูตัวอย่างกันครับ

  • เราจะใช้แอปพลิเคชันสาธิตตัวเดิมที่มีไฟล์ ErrorPage.html อยู่
  • และเราจะพยายามดูหน้าเว็บที่ไม่มีอยู่ในแอปพลิเคชันของเรา
  • ในกรณีนี้เราควรเปลี่ยนเส้นทางไปที่หน้า ErrorPage.html
  • และในขณะเดียวกัน เราจะบันทึกข้อความแสดงข้อผิดพลาดลงในไฟล์บันทึก มาดูขั้นตอนการดำเนินการกันเลย

ขั้นตอน 1) มาเริ่มสร้างแอปพลิเคชันสาธิตกันเลย เปิดไฟล์ Global.asax.cs จาก Solution Explorer

การบันทึกข้อผิดพลาด ASP.NET

ขั้นตอน 2) เพิ่มโค้ดบรรทัดด้านล่างลงในไฟล์ Global.asax.cs โค้ดนี้จะตรวจสอบข้อผิดพลาดและแสดงหน้า ErrorPage.html ตามความเหมาะสม นอกจากนี้ ในขณะเดียวกัน เราจะบันทึกรายละเอียดข้อผิดพลาดลงในไฟล์ชื่อ AllErrors.txt ในตัวอย่างนี้ เราจะเขียนโค้ดเพื่อสร้างไฟล์นี้ในไดรฟ์ D

การบันทึกข้อผิดพลาด ASP.NET

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            Exception exc = Server.GetLastError();
            String str = "";
            str = exc.Message;

            String path = @"D:\AllErrors.txt";
            File.WriteAllText(path, str);
            Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code คำอธิบาย:-

  1. บรรทัดแรกคือการดึงข้อผิดพลาดโดยใช้เมธอด Server.GetLastError จากนั้นกำหนดค่าให้กับตัวแปร exc
  2. จากนั้นเราสร้างตัวแปรสตริงว่างชื่อ str เราจะดึงข้อความแสดงข้อผิดพลาดจริงโดยใช้คุณสมบัติ exc.Message คุณสมบัติ exc.Message จะมีข้อความที่ถูกต้องสำหรับข้อผิดพลาดใดๆ ที่เกิดขึ้นขณะเรียกใช้แอปพลิเคชัน จากนั้นจึงกำหนดค่านี้ให้กับตัวแปรสตริง
  3. ถัดไป เรากำหนดไฟล์ชื่อ AllErrors.txt ไฟล์นี้จะเป็นที่ที่ข้อความแสดงข้อผิดพลาดทั้งหมดจะถูกส่งไป เราเขียนสตริง str ซึ่งประกอบด้วยข้อความแสดงข้อผิดพลาดทั้งหมดลงในไฟล์นี้
  4. สุดท้าย เราจะโอนผู้ใช้ไปยังไฟล์ ErrorPage.html

ผลลัพธ์:-

เรียกดูหน้า http://localhost:53003/Demo1.aspx- โปรดจำไว้ว่า Demo1.aspx ไม่มีอยู่ในแอปพลิเคชันของเรา จากนั้นคุณจะได้ผลลัพธ์ด้านล่าง

การบันทึกข้อผิดพลาด ASP.NET

และในขณะเดียวกัน หากคุณเปิดไฟล์ AllErrors.txt คุณจะเห็นข้อมูลด้านล่างนี้

การบันทึกข้อผิดพลาด ASP.NET

สามารถส่งข้อความแสดงข้อผิดพลาดไปยังนักพัฒนาในภายหลังเพื่อวัตถุประสงค์ในการดีบักได้

คำถามที่พบบ่อย

ใช่แล้ว เครื่องมือ AI เช่น GitHub Copilot สามารถแนะนำจุดหยุดการทำงาน อธิบายข้อผิดพลาด และเสนอวิธีแก้ไขสำหรับโค้ด ASP.NET ได้ Revโปรดตรวจสอบคำแนะนำแต่ละข้อและลองทำซ้ำข้อผิดพลาดด้วยตนเอง เนื่องจาก AI อาจตีความสถานะเฉพาะของแอปพลิเคชันผิดพลาดได้

ใช่แล้ว ฟีเจอร์การเรียนรู้ของเครื่องในเครื่องมือต่างๆ เช่น Azure Application Insights สามารถตรวจจับความผิดปกติที่เกิดขึ้นโดยอัตโนมัติ ไม่ว่าจะเป็นข้อผิดพลาดหรือการร้องขอที่ช้า ซึ่งช่วยให้ทีมค้นหาปัญหาในระบบการผลิตได้เร็วกว่าการตรวจสอบไฟล์บันทึกข้อมูลดิบด้วยตนเอง

ไม่ การปิดโหมด customErrors จะทำให้มองเห็น stack ได้ tracการเปิดเผยข้อมูลที่ไม่ถูกต้องและรายละเอียดที่ละเอียดอ่อนแก่ผู้เข้าชมทุกคนถือเป็นความเสี่ยงด้านความปลอดภัย ควรใช้โหมด RemoteOnly หรือ On ในสภาพแวดล้อมการใช้งานจริง เพื่อให้เฉพาะนักพัฒนาในพื้นที่เท่านั้นที่เห็นรายละเอียดข้อผิดพลาดทั้งหมด

RemoteOnly จะแสดงหน้าข้อผิดพลาดโดยละเอียดเฉพาะกับเบราว์เซอร์บนเซิร์ฟเวอร์ภายในเครื่องเท่านั้น ในขณะที่ผู้ใช้ระยะไกลจะถูกส่งไปยังหน้า defaultRedirect นี่เป็นวิธีที่ปลอดภัยในการแก้ไขข้อผิดพลาดของเว็บไซต์ที่ใช้งานจริงโดยไม่เปิดเผยข้อมูล

ตั้งค่า debug=”false” ในส่วน compilation ของไฟล์ web.config โหมดดีบักจะปิดใช้งานการเพิ่มประสิทธิภาพ ทำให้เวลาหมดอายุยาวนานขึ้น และใช้หน่วยความจำมากขึ้น ดังนั้นเว็บไซต์ที่ใช้งานจริงควรปิดใช้งานโหมดดีบักไว้เสมอ Visual Studio.

ไม่ เปิดอยู่ trace.axd สามารถเปิดเผยส่วนหัว เซสชัน และตัวแปรเซิร์ฟเวอร์ให้กับผู้โจมตีได้ ตั้งค่า localOnly=”true” หรือปิดใช้งาน tracดำเนินการทั้งหมดก่อนการใช้งานจริง tracข้อมูลจะไม่ถูกเปิดเผยต่อผู้ใช้ระยะไกลโดยเด็ดขาด

Server.Transfer จะส่งต่อคำขอไปยังหน้าแสดงข้อผิดพลาดบนเซิร์ฟเวอร์โดยไม่เปลี่ยนแปลงเบราว์เซอร์ URL หรือการเดินทางไปกลับ Response.Redirect จะส่งคำขอใหม่ไปยังเบราว์เซอร์เพื่ออัปเดตข้อมูล URL ไปยังหน้าแสดงข้อผิดพลาด

บันทึกข้อความแสดงข้อผิดพลาดและสแต็ก trace, ร้องขอ URLรวมถึงเวลาที่เกิดข้อผิดพลาดและบริบทของผู้ใช้ รายละเอียดเหล่านี้ช่วยให้นักพัฒนาสามารถจำลองข้อผิดพลาดได้ในภายหลัง เมธอด Server.GetLastError ใน Application_Error จะเปิดเผยข้อยกเว้นเพื่อให้คุณสามารถเขียนลงในไฟล์หรือฐานข้อมูลได้

สรุปโพสต์นี้ด้วย: