การติดตามระดับเพจ Asp.Net การดีบัก การจัดการข้อผิดพลาด [ตัวอย่าง]
ในแอปพลิเคชันใดๆ ข้อผิดพลาดจะเกิดขึ้นในระหว่างกระบวนการพัฒนา สิ่งสำคัญคือต้องสามารถค้นพบข้อผิดพลาดได้ตั้งแต่เนิ่นๆ
ใน Visual Studio คุณสามารถทำสิ่งนี้ได้สำหรับแอปพลิเคชัน ASP.Net Visual Studio ใช้ในการดีบักและมีเทคนิคการจัดการข้อผิดพลาดสำหรับ ASP.Net
การดีบักใน ASP.NET คืออะไร
การดีบักเป็นกระบวนการในการเพิ่มเบรกพอยต์ให้กับแอปพลิเคชัน เบรกพอยท์เหล่านี้ใช้เพื่อหยุดการทำงานของโปรแกรมที่กำลังทำงานอยู่ชั่วคราว สิ่งนี้ช่วยให้นักพัฒนาเข้าใจสิ่งที่เกิดขึ้นในโปรแกรม ณ เวลาใดเวลาหนึ่ง
มาดูตัวอย่างโปรแกรมกัน โปรแกรมจะแสดงสตริง “We are debugging” (เรากำลังดีบัก) ให้ผู้ใช้ดู สมมติว่าเมื่อเรารันแอปพลิเคชัน สตริงนั้นไม่ปรากฏขึ้นด้วยเหตุผลบางประการ เพื่อระบุปัญหา เราต้องเพิ่มจุดพัก เราสามารถเพิ่มจุดพักลงในบรรทัดโค้ดที่แสดงสตริง จุดพักนี้จะหยุดการทำงานของโปรแกรม เมื่อถึงจุดนี้ โปรแกรมเมอร์จะเห็นว่าอะไรที่อาจผิดพลาดได้ โปรแกรมเมอร์จะแก้ไขโปรแกรมตามนั้น
ในตัวอย่างนี้ เราจะใช้ 'DemoApplication' ที่สร้างไว้ในบทก่อนหน้า ในตัวอย่างต่อไปนี้ เราจะเห็น
- วิธีทำให้แอปพลิเคชันสาธิตแสดงสตริง
- วิธีเพิ่มเบรกพอยต์ให้กับแอปพลิเคชัน
- วิธีดีบักแอปพลิเคชันโดยใช้เบรกพอยต์นี้
วิธีการดีบักแอปพลิเคชันใน ASP.NET
ด้านล่างนี้เป็นขั้นตอนในการสร้างแอปพลิเคชันสาธิต เพิ่มเบรกพอยต์ และดีบักใน ASP.Net:
ขั้นตอนที่ 1) เปิดแอปพลิเคชันใน Visual Studio
ขั้นแรกให้ตรวจสอบให้แน่ใจว่าเว็บแอปพลิเคชันของเราเปิดอยู่ใน Visual Studio แล้ว และตรวจสอบว่า DemoApplication เปิดอยู่ใน Visual Studio แล้ว
ขั้นตอนที่ 2) ตอนนี้เปิดไฟล์ Demo.aspx.cs และเพิ่มบรรทัดโค้ดด้านล่าง
- เราเพิ่งเพิ่มบรรทัดโค้ด Response.Write เพื่อแสดงสตริง
- ดังนั้นเมื่อแอปพลิเคชันทำงาน ควรแสดงสตริง “เรากำลังแก้ไขจุดบกพร่อง” ในเว็บเบราว์เซอร์
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("We are debugging"); } } }
ขั้นตอนที่ 3) เพิ่มเบรกพอยต์ให้กับแอปพลิเคชัน
จุดพักคือจุดใน Visual Studio ที่คุณต้องการให้หยุดการดำเนินการโปรแกรม
- หากต้องการเพิ่มเบรกพอยต์ คุณต้องคลิกคอลัมน์ที่คุณต้องการแทรกเบรกพอยต์ ดังนั้นในกรณีของเรา เราต้องการให้โปรแกรมของเราหยุดที่บรรทัดโค้ด “Response.Write” คุณไม่จำเป็นต้องเพิ่มคำสั่งใดๆ เพื่อเพิ่มเบรกพอยต์ คุณเพียงแค่ต้องคลิกที่บรรทัดที่คุณต้องการเพิ่มเบรกพอยต์
- เมื่อเสร็จแล้ว คุณจะสังเกตเห็นว่าโค้ดถูกทำเครื่องหมายเป็นสีแดง นอกจากนี้ ฟองอากาศสีแดงจะปรากฏขึ้นในคอลัมน์ถัดจากบรรทัดโค้ด
บันทึก: - คุณสามารถเพิ่มเบรกพอยท์หลายรายการในแอปพลิเคชันได้
ขั้นตอนที่ 4) เรียกใช้แอปพลิเคชันในโหมดแก้ไขจุดบกพร่อง
ตอนนี้คุณต้องเรียกใช้แอปพลิเคชันของคุณโดยใช้โหมดดีบัก ใน Visual Studio เลือกตัวเลือกเมนู Debug->Start Debugging
ผลลัพธ์:-
เมื่อคุณทำตามขั้นตอนทั้งหมดอย่างถูกต้อง โปรแกรมจะทำงานผิดพลาด Visual Studio จะไปที่จุดหยุดการทำงานและทำเครื่องหมายบรรทัดโค้ดเป็นสีเหลือง
ตอนนี้หากโปรแกรมเมอร์รู้สึกว่าโค้ดไม่ถูกต้อง การดำเนินการก็สามารถหยุดได้ รหัสนั้นสามารถแก้ไขได้ตามนั้น หากต้องการดำเนินโปรแกรมต่อ โปรแกรมเมอร์ต้องคลิกปุ่ม F5 บนแป้นพิมพ์
การติดตามใน ASP.NET คืออะไร
การติดตามแอปพลิเคชันช่วยให้สามารถดูว่าเพจใดๆ ที่ร้องขอส่งผลให้เกิดข้อผิดพลาดหรือไม่ เมื่อเปิดใช้งานการติดตาม หน้าพิเศษที่เรียกว่า Trac.axd จะถูกเพิ่มลงในแอปพลิเคชัน (ดูภาพด้านล่าง) หน้านี้แนบมากับใบสมัคร หน้านี้จะแสดงคำขอและสถานะทั้งหมด
วิธีเปิดใช้งานการติดตามสำหรับแอปพลิเคชันใน ASP.NET
มาดูวิธีการเปิดใช้งานการติดตามสำหรับ แอปพลิเคชัน ASP.Net:
ขั้นตอน 1) มาทำงานกับ 'DemoApplication' ของเรากันดีกว่า เปิดไฟล์ web.config จาก Solution Explorer
ขั้นตอน 2) เพิ่มบรรทัดโค้ดด้านล่างลงในไฟล์ Web.config
คำสั่งการติดตามใช้เพื่อเปิดใช้งานการติดตามสำหรับแอปพลิเคชัน
- มีการใช้คำสั่ง 'requestLimit' ในการติดตาม โดยระบุจำนวนคำขอเพจที่ต้องติดตาม
- ในตัวอย่างของเรา เราให้ขีดจำกัดไว้ที่ 40 เราให้ขีดจำกัดเนื่องจากค่าที่สูงกว่าจะทำให้ประสิทธิภาพของแอปพลิเคชันลดลง
<?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 enable="true" pageOutput="false" requestLimit="40" localOnly="false"/> </system.web> </configuration>
เรียกใช้ “demoapplication” ใน Visual Studio
ผลลัพธ์:-
หากตอนนี้คุณเรียกดู URL – http://localhost:53003/trace.axd คุณจะเห็นข้อมูลของแต่ละคำขอ ที่นี่ คุณสามารถดูได้ว่ามีข้อผิดพลาดใด ๆ เกิดขึ้นในแอปพลิเคชันหรือไม่ ข้อมูลประเภทต่อไปนี้จะแสดงอยู่ในหน้าข้างต้น
- เวลาที่ขอหน้าเว็บ
- ชื่อของหน้าเว็บที่ถูกร้องขอ
- รหัสสถานะของคำขอเว็บ (รหัสสถานะ 200 หมายความว่าคำขอสำเร็จ)
- รายละเอียดการดู ซึ่งคุณสามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับคำขอทางเว็บได้ ตัวอย่างนี้แสดงไว้ด้านล่าง ข้อมูลรายละเอียดที่สำคัญอย่างหนึ่งที่ให้ไว้คือข้อมูลส่วนหัว ข้อมูลนี้แสดงข้อมูลที่ส่งมาในส่วนหัวของคำขอทางเว็บแต่ละรายการ
การติดตามระดับเพจใน ASP.NET
การติดตามระดับเพจ ใน ASP.Net จะแสดงข้อมูลทั่วไปทั้งหมดเกี่ยวกับหน้าเว็บเมื่อทำการประมวลผล ซึ่งมีประโยชน์ในการดีบักหากหน้าเว็บไม่ทำงานด้วยเหตุผลใดก็ตาม Visual Studio ให้ข้อมูลโดยละเอียดเกี่ยวกับแง่มุมต่างๆ ของหน้าเว็บและข้อมูลต่างๆ เช่น เวลาสำหรับแต่ละวิธีที่เรียกใช้ในคำขอเว็บ
ตัวอย่างเช่น หากแอปพลิเคชันเว็บของคุณประสบปัญหาเกี่ยวกับประสิทธิภาพ ข้อมูลนี้อาจช่วยในการแก้ไขปัญหาได้ ข้อมูลนี้จะแสดงขึ้นเมื่อแอปพลิเคชันทำงานใน Visual Studio
วิธีเปิดใช้งานการติดตามในระดับเพจใน ASP.NET
มาดูวิธีเปิดใช้งานการติดตามระดับเพจสำหรับแอปพลิเคชัน ASP.Net:
ขั้นตอน 1) มาทำงานกับ DemoApplication ของเรากันดีกว่า เปิดไฟล์ demo.aspx จาก Solution Explorer
ขั้นตอน 2) เพิ่มบรรทัดโค้ดด้านล่างเพื่อเปิดใช้งานการติดตามหน้า ในการประกาศเพจ เพียงต่อท้ายบรรทัด Trace=”true” บรรทัดรหัสนี้จะช่วยให้สามารถติดตามระดับหน้าได้
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %> <!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server”> </form> </body> </html>
เรียกใช้แอพพลิเคชันใน Visual Studio
ผลลัพธ์:-
เมื่อแสดงหน้าเว็บ Demo.aspx คุณจะได้รับข้อมูลมากมายเกี่ยวกับหน้าเว็บ ข้อมูลเช่นเวลาสำหรับแต่ละแง่มุมของวงจรชีวิตของหน้าเว็บจะแสดงบนหน้านี้
การจัดการข้อผิดพลาด: การแสดงหน้าข้อผิดพลาดแบบกำหนดเอง
In ASP.Netคุณสามารถให้ผู้ใช้เห็นหน้าข้อผิดพลาดแบบกำหนดเองได้ หากแอปพลิเคชันมีข้อผิดพลาดใดๆ หน้าแบบกำหนดเองจะแสดงข้อผิดพลาดนั้นให้ผู้ใช้เห็น
ในตัวอย่างของเรา เราจะเพิ่มหน้า HTML ก่อน หน้านี้จะแสดงสตริงแก่ผู้ใช้ว่า "เรากำลังตรวจสอบปัญหา" จากนั้นเราจะเพิ่มรหัสข้อผิดพลาดลงในหน้า demo.aspx เพื่อให้หน้าข้อผิดพลาดปรากฏขึ้น
มาทำตามขั้นตอนที่กล่าวถึงด้านล่าง
ขั้นตอน 1) มาทำงานกับ DemoApplication ของเรากันดีกว่า มาเพิ่มหน้า HTML ให้กับแอปพลิเคชันกัน
- คลิกขวาที่ DemoApplication ใน Solution Explorer
- เลือกตัวเลือกเมนู 'เพิ่ม' -> หน้า HTML
ขั้นตอน 2) ในขั้นตอนถัดไป เราต้องระบุชื่อให้กับหน้า HTML ใหม่
- ระบุชื่อเป็น 'ErrorPage'
- คลิกปุ่ม 'ตกลง' เพื่อดำเนินการต่อ
ขั้นตอน 3) Errorpage จะเปิดขึ้นใน Visual Studio โดยอัตโนมัติ หากคุณไปที่ Solution Explorer คุณจะเห็นไฟล์ที่ถูกเพิ่มเข้ามา
เพิ่มบรรทัดโค้ด “เรากำลังตรวจสอบปัญหา” ลงในหน้า HTML คุณไม่จำเป็นต้องปิดไฟล์ HTML ก่อนทำการเปลี่ยนแปลงไฟล์ web.config
<!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> We are looking into the problem </body> </html>
ขั้นตอน 4) ตอนนี้คุณต้องทำการเปลี่ยนแปลงในไฟล์ web.config การเปลี่ยนแปลงนี้จะแจ้งเตือนว่าเมื่อใดก็ตามที่เกิดข้อผิดพลาดในแอปพลิเคชัน จะต้องแสดงหน้าข้อผิดพลาดแบบกำหนดเอง
แท็ก 'customErrors' ช่วยให้สามารถกำหนดหน้าข้อผิดพลาดที่กำหนดเองได้ คุณสมบัติ defaultRedirect ถูกตั้งค่าเป็นชื่อของหน้าข้อผิดพลาดแบบกำหนดเองของเราที่สร้างขึ้นในขั้นตอนก่อนหน้า
<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
เพิ่มโค้ดด้านล่างลงในไฟล์ Demo.aspx.cs
- บรรทัดโค้ดเหล่านี้ออกแบบมาเพื่ออ่านบรรทัดข้อความจากไฟล์
- ไฟล์ควรจะอยู่ในไดรฟ์ D ที่มีชื่อ 'Example.txt'
- แต่ในสถานการณ์ของเรา ไฟล์นี้ไม่มีอยู่จริง ดังนั้นรหัสนี้จะส่งผลให้เกิดข้อผิดพลาดเมื่อแอปพลิเคชันทำงาน
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 และคุณควรได้รับผลลัพธ์ด้านล่าง
ผลลัพธ์:-
หน้าด้านบนแสดงให้เห็นว่ามีข้อผิดพลาดเกิดขึ้นในแอปพลิเคชัน เป็นผลให้หน้า Error.html จะแสดงแก่ผู้ใช้
ASP.NET ข้อยกเว้นที่ไม่สามารถจัดการได้
แม้ในสถานการณ์ที่ดีที่สุด ก็อาจมีกรณีของข้อผิดพลาดซึ่งไม่ได้มองข้ามไป
สมมติว่าผู้ใช้เรียกดูหน้าผิดในแอปพลิเคชัน นี่คือสิ่งที่ไม่สามารถคาดเดาได้ ในกรณีเช่นนี้ ASP.Net สามารถเปลี่ยนเส้นทางผู้ใช้ไปที่ errorpage.html
ลองดูตัวอย่างเกี่ยวกับเรื่องนี้
- เราจะใช้ 'DemoApplication' เดียวกันซึ่งมี Errorpage.html
- และเราจะพยายามดูหน้าเว็บที่ไม่มีอยู่ในแอปพลิเคชันของเรา
- ในกรณีนี้เราควรเปลี่ยนเส้นทางไปที่หน้า ErrorPage.html เรามาดูขั้นตอนในการบรรลุเป้าหมายนี้กัน
ขั้นตอน 1) มาทำงานกับ DemoApplication ของเรากันดีกว่า เปิดไฟล์ Global.asax.cs จาก Solution Explorer
หมายเหตุ: ไฟล์ global.asax.cs ใช้เพื่อเพิ่มโค้ดที่จะใช้ได้กับทุกหน้าในแอปพลิเคชัน
ขั้นตอน 2) เพิ่มบรรทัดโค้ดด้านล่างใน global.asax.cs บรรทัดเหล่านี้จะใช้ในการตรวจสอบข้อผิดพลาดและแสดงหน้า ErrorPage.html ตามลำดับ
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { ? HttpException lastErrorWrapper = Server.GetLastError() as HttpException; if(lastErrorWrapper.GetHttpCode() == 404) Server.T ransfer("~/ErrorPage.html"); } } }
คำอธิบายรหัส:-
- บรรทัดแรกคือตัวจัดการเหตุการณ์ Application_Error เหตุการณ์นี้จะถูกเรียกเมื่อใดก็ตามที่เกิดข้อผิดพลาดในแอปพลิเคชัน โปรดทราบว่าชื่อเหตุการณ์จะต้องเป็น 'Application_Error' และพารามิเตอร์ควรเป็นไปตามที่แสดงด้านบน
- จากนั้นเราจะกำหนดอ็อบเจ็กต์ของชนิดคลาส HttpException ซึ่งเป็นอ็อบเจ็กต์มาตรฐานที่จะเก็บรายละเอียดทั้งหมดของข้อผิดพลาด จากนั้นเราจะใช้เมธอด Server.GetLastError เพื่อรับรายละเอียดทั้งหมดของข้อผิดพลาดครั้งล่าสุดที่เกิดขึ้นในแอปพลิเคชัน
- จากนั้นเราจะตรวจสอบว่ารหัสข้อผิดพลาดของข้อผิดพลาดครั้งล่าสุดคือ 404 หรือไม่ (รหัสข้อผิดพลาด 404 คือรหัสมาตรฐานที่ส่งคืนเมื่อผู้ใช้เรียกดูหน้าที่ไม่พบ) จากนั้นเราจะโอนผู้ใช้ไปที่หน้า ErrorPage.html หากรหัสข้อผิดพลาดตรงกัน
ตอนนี้รันโค้ดใน Visual Studio แล้วคุณควรจะได้ผลลัพธ์ด้านล่างนี้
ผลลัพธ์:-
เรียกดูหน้า http://localhost:53003/Demo1.aspx - โปรดจำไว้ว่า Demo1.aspx ไม่มีอยู่ในแอปพลิเคชันของเรา จากนั้นคุณจะได้ผลลัพธ์ด้านล่าง
หน้าด้านบนแสดงให้เห็นว่ามีข้อผิดพลาดเกิดขึ้นในแอปพลิเคชัน เป็นผลให้หน้า Error.html จะแสดงแก่ผู้ใช้
การบันทึกข้อผิดพลาด ASP.NET
การบันทึกข้อผิดพลาดของแอปพลิเคชันช่วยให้นักพัฒนาสามารถดีบักและแก้ไขข้อผิดพลาดได้ในภายหลัง ASP.Net มีระบบบันทึกข้อผิดพลาด ซึ่งทำได้ในไฟล์ Global.asax.cs เมื่อตรวจพบข้อผิดพลาด ในระหว่างกระบวนการบันทึก ข้อความแสดงข้อผิดพลาดสามารถเขียนลงในไฟล์บันทึกได้
ลองดูตัวอย่างเกี่ยวกับเรื่องนี้
- เราจะใช้ DemoApplication เดียวกันซึ่งมี Errorpage.html
- และเราจะพยายามดูหน้าเว็บที่ไม่มีอยู่ในแอปพลิเคชันของเรา
- ในกรณีนี้เราควรเปลี่ยนเส้นทางไปที่หน้า ErrorPage.html
- และในเวลาเดียวกัน เราจะเขียนข้อความแสดงข้อผิดพลาดลงในไฟล์บันทึก เรามาดูขั้นตอนในการบรรลุเป้าหมายนี้กัน
ขั้นตอน 1) มาทำงานกับ DemoApplication ของเรากันดีกว่า เปิดไฟล์ Global.asax.cs จาก Solution Explorer
ขั้นตอน 2) เพิ่มบรรทัดโค้ดด้านล่างนี้ลงในไฟล์ global.asax.cs โปรแกรมจะตรวจสอบข้อผิดพลาดและแสดงหน้า ErrorPage.html ตามลำดับ นอกจากนี้ เราจะบันทึกรายละเอียดข้อผิดพลาดในไฟล์ชื่อ 'AllErrors.txt' สำหรับตัวอย่างของเรา เราจะเขียนโค้ดเพื่อสร้างไฟล์นี้ในไดรฟ์ D
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); String str =""; str = exc.Message; String path = @"D:\AllErrors.txt"; File.WriteAllTest(path,str); Server.trrasfer("~/ErrorPage.html"); } } }
คำอธิบายรหัส:-
- บรรทัดแรกคือการได้รับข้อผิดพลาดโดยใช้วิธี 'Server.GetLastError' จากนั้นจึงกำหนดให้กับตัวแปร 'exc'
- จากนั้นเราสร้างตัวแปรสตริงว่างที่เรียกว่า 'str' เราได้รับข้อความแสดงข้อผิดพลาดจริงโดยใช้คุณสมบัติ 'exc.Message' คุณสมบัติ exc.Message จะมีข้อความที่แน่นอนสำหรับข้อผิดพลาดใดๆ ที่เกิดขึ้นเมื่อเรียกใช้แอปพลิเคชัน จากนั้นจะกำหนดให้กับตัวแปรสตริง
- ต่อไป เราจะกำหนดไฟล์ชื่อ 'AllErrors.txt' นี่คือที่ที่ข้อความแสดงข้อผิดพลาดทั้งหมดจะถูกส่งไป เราเขียนสตริง 'str' ซึ่งมีข้อความแสดงข้อผิดพลาดทั้งหมดในไฟล์นี้
- สุดท้าย เราจะโอนผู้ใช้ไปยังไฟล์ ErrorPage.html
ผลลัพธ์:-
เรียกดูหน้า http://localhost:53003/Demo1.aspx - โปรดจำไว้ว่า Demo1.aspx ไม่มีอยู่ในแอปพลิเคชันของเรา จากนั้นคุณจะได้ผลลัพธ์ด้านล่าง
และในเวลาเดียวกัน หากคุณเปิดไฟล์ 'AllErrors.txt' คุณจะเห็นข้อมูลด้านล่าง
สามารถส่งข้อความแสดงข้อผิดพลาดไปยังนักพัฒนาในภายหลังเพื่อวัตถุประสงค์ในการดีบักได้
สรุป
- ASP.Net มีสิ่งอำนวยความสะดวกในการดำเนินการแก้ไขจุดบกพร่องและการจัดการข้อผิดพลาด
- การดีบักสามารถทำได้โดยการเพิ่มจุดพักในโค้ด จากนั้นเรียกใช้ตัวเลือก Start with Debugging ใน Visual Studio เพื่อดีบักโค้ด
- การติดตามคือเครื่องมืออำนวยความสะดวกในการให้ข้อมูลเพิ่มเติมขณะรันแอปพลิเคชัน ซึ่งสามารถทำได้ในระดับแอปพลิเคชันหรือหน้า
- ในระดับเพจ จำเป็นต้องเพิ่มโค้ด Trace=true ลงในคำสั่งเพจ
- ในระดับแอปพลิเคชัน หน้าพิเศษที่เรียกว่า Trace.axd จะถูกสร้างขึ้นสำหรับแอปพลิเคชัน ซึ่งจะให้ข้อมูลการติดตามที่จำเป็นทั้งหมด