การเปลี่ยนเส้นทางผู้ใช้ไปยังหน้า 404 ที่กำหนดเองใน ASP.NET MVC

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

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

เข้าใจปัญหา

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

http://www.nosite.com/paeges/1

URL นี้ไม่ถูกต้องและควรจะชี้ไปที่คอนโทรลเลอร์ /pages/ แทนที่จะทำให้ผู้ใช้ไปพบข้อความแสดงข้อผิดพลาดทั่วไป เราต้องการเปลี่ยนเส้นทางพวกเขาไปยังหน้าข้อผิดพลาด 404 ที่เป็นมิตรและให้ข้อมูล

ภาพรวมของวิธีแก้ปัญหา

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

ขั้นตอนที่ 1: กำหนดหน้าข้อผิดพลาดที่กำหนดเอง

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

  • สร้างมุมมอง: ในไดเรกทอรี /Views/Shared/ ของคุณ ให้เพิ่มมุมมองใหม่ชื่อ Error404.cshtml
  • ออกแบบเนื้อหา: ให้แน่ใจว่าเนื้อหาเป็นมิตรกับผู้ใช้ ตัวอย่างเช่น:
    <h1>อุ๊บส์! ไม่พบหน้า</h1>
    <p>ขออภัย หน้าเว็บที่คุณกำลังมองหาไม่อยู่ กรุณาตรวจสอบ URL หรือกลับไปที่หน้าแรก</p>
    

ขั้นตอนที่ 2: อัปเดต Web.Config สำหรับข้อผิดพลาดที่กำหนดเอง

ถัดไป คุณต้องแจ้งให้แอปพลิเคชัน ASP.NET MVC ของคุณแสดงหน้าแสดงข้อผิดพลาดที่กำหนดเองเมื่อเกิดรหัสสถานะ HTTP ที่กำหนด เปิดไฟล์ Web.config ของคุณและเพิ่มบรรทัดต่อไปนี้:

<system.web>
  <customErrors mode="On" defaultRedirect="~/Error404">
    <error statusCode="404" redirect="~/Error404" />
  </customErrors>
</system.web>
  • mode: ตั้งค่านี้เป็น On เพื่อเปิดใช้งานหน้าแสดงข้อผิดพลาดที่กำหนดเอง
  • defaultRedirect: นี่คือเส้นทางไปยังหน้าข้อผิดพลาดที่กำหนดเองของคุณ
  • error: นี่ระบุว่าเมื่อเกิดข้อผิดพลาด 404 ควรเปลี่ยนเส้นทางไปยังหน้าที่กำหนดไว้

ขั้นตอนที่ 3: จัดการเส้นทางในไฟล์ Global.asax

ถัดไป คุณต้องการให้แน่ใจว่าปัญหาการกำหนดเส้นทางจะถูกบันทึก เปิดไฟล์ Global.asax ของคุณและเพิ่มวิธีการดังต่อไปนี้:

protected void Application_Error()
{
    Exception exception = Server.GetLastError();
    HttpException httpException = exception as HttpException;

    if (httpException != null)
    {
        int httpCode = httpException.GetHttpCode();
        if (httpCode == 404) // ไม่พบ
        {
            Response.Clear();
            Server.ClearError();
            Response.Redirect("~/Error404");
        }
    }
}
  • Application_Error(): วิธีการนี้ทำงานเมื่อมีข้อผิดพลาดที่ไม่มีการจัดการเกิดขึ้นในแอปพลิเคชันของคุณ
  • จับข้อยกเว้น: โค้ดนี้จับข้อยกเว้นและตรวจสอบว่ารหัสสถานะ HTTP เท่ากับ 404
  • เปลี่ยนเส้นทาง: หากเป็นเช่นนั้น ให้ล้างข้อผิดพลาดและเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าข้อผิดพลาด 404 ที่กำหนดเองของคุณ

สรุป

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

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


ด้วยขั้นตอนที่เรียบง่ายเหล่านี้ คุณสามารถปรับปรุงวิธีที่แอปพลิเคชัน ASP.NET MVC ของคุณจัดการข้อผิดพลาดการกำหนดเส้นทาง ขอให้คุณสนุกกับการเขียนโค้ด!