ASP.NET 2.0 ยังมีคุณสมบัติครบถ้วนในการตรวจสอบแอปพลิเคชันและการตรวจสอบสุขภาพ ระบบประกอบด้วยโมเดลเหตุการณ์ที่ขยายได้เต็มที่และเอ็นจิ้นเหตุการณ์ที่สามารถส่งเหตุการณ์ไปยังเครื่องรับที่หลากหลาย ตัวอย่างเช่น คุณสามารถกำหนดค่าแอปพลิเคชัน ASP.NET ของคุณให้ส่งอีเมลรายวันเพื่อระบุว่าเซิร์ฟเวอร์กำลังทำงานอยู่และรวมจำนวนหน่วยความจำที่มีอยู่ด้วย ในทำนองเดียวกัน คุณสามารถสร้างเหตุการณ์ความสมบูรณ์ที่เชื่อมโยงกับข้อยกเว้นที่ไม่สามารถจัดการได้ เนื้อหาข้อยกเว้น ส่วนหัวของคำขอ และเวลาและวันที่สามารถส่งไปยังฐานข้อมูลการบันทึกข้อผิดพลาดได้
ASP.NET 2.0 มีเหตุการณ์ในตัว รวมถึงฮาร์ทบีท เหตุการณ์อายุการใช้งานของแอปพลิเคชัน (เริ่ม/หยุด/คอมไพล์) และเหตุการณ์กับดักข้อผิดพลาด (ข้อยกเว้นที่ไม่สามารถจัดการได้) อย่างไรก็ตาม คุณสามารถสร้างต่อยอดจากคลาสพื้นฐานเหล่านี้ได้อย่างง่ายดายเพื่อสร้างและยกระดับกิจกรรมของคุณเองจากแอปพลิเคชันของคุณ ตัวอย่างเช่น คุณอาจสร้างเหตุการณ์ที่กำหนดเองเพื่อบันทึกเมื่อผู้ใช้ร้อยคลิกลิงก์ใดลิงก์หนึ่ง
คุณสมบัติอันทรงพลังของระบบตรวจสอบสถานะ ASP.NET 2.0 คือสามารถกำหนดค่าได้อย่างสมบูรณ์ผ่านไฟล์ web.config และ machine.config เมื่อใช้ XML ปกติ คุณสามารถกำหนดเหตุการณ์ กำหนดผู้ให้บริการ (ตัวรับเหตุการณ์) และส่งเหตุการณ์เฉพาะไปยังผู้ให้บริการเฉพาะได้
การสร้างเหตุการณ์ เหตุการณ์มีโครงสร้างคล้ายคลึงกับข้อยกเว้น กล่าวอีกนัยหนึ่ง คลาสเหตุการณ์นั้นแทบจะไม่มีฟังก์ชันการทำงานใดๆ เลย ยกเว้นเป็นที่เก็บข้อความ ในแง่ของการตรวจสอบสุขภาพ เหตุการณ์ทั้งหมดสืบทอดมาจาก System.Web.Management.WebBaseEvent อย่างไรก็ตาม คุณยังสามารถสืบทอดมาจากคลาสพื้นฐานระดับสูงที่ใช้เพื่อวัตถุประสงค์พิเศษ เช่น การรวบรวมข้อมูลคำขอ HTTP หรือการจัดการข้อยกเว้น
รายการ 4 เหตุการณ์ที่กำหนดเอง
โดยใช้ระบบ;
ใช้ System.Web.Management;
CustomEvent คลาสสาธารณะ: WebBaseEvent
-
สาธารณะ const int EventCode = WebEventCodes.WebExtensedBase + 10;
MyEvent สาธารณะ (ข้อความสตริง แหล่งที่มาของวัตถุ)
: ฐาน (ข้อความ, แหล่งที่มาของเหตุการณ์, รหัสเหตุการณ์)
-
}
ส่วนที่สำคัญที่สุดในการสร้างเหตุการณ์ที่กำหนดเองคือการจัดเตรียม EventCode ที่ไม่ซ้ำใคร รหัสเหตุการณ์ในตัวทั้งหมดอยู่ในการแจงนับ WebEventCodes เหตุการณ์ที่กำหนดเองควรมีตัวเลขเริ่มต้นจาก WebEventCodes.WebExtensedBase + 1 นอกเหนือจากนั้นงานทั่วไปเพียงอย่างเดียวในการสร้างเหตุการณ์แบบกำหนดเองคือการเริ่มต้นเหตุการณ์อย่างถูกต้อง
การใช้เหตุการณ์ แม้ว่าเหตุการณ์ในตัวจะเริ่มการทำงานโดยอัตโนมัติ แต่คุณสามารถเพิ่มโค้ดลงในแอปพลิเคชันของคุณเพื่อเริ่มการทำงานของเหตุการณ์ที่กำหนดเองได้ตลอดเวลา
รายการ 5. เพิ่มเหตุการณ์
<script runat="server">
เป็นโมฆะ Page_Load (ผู้ส่งวัตถุ EventArgs e)
{ // เพิ่มเหตุการณ์ที่กำหนดเอง MyEvent myEvent =
new MyEvent("กำลังโหลดหน้าตัวอย่าง webevent", this); myEvent.Raise();
</script>
เมื่อคุณเพิ่มเหตุการณ์จากเพจ ASP.NET คุณเพียงแค่สร้างอินสแตนซ์ใหม่ของเหตุการณ์ จากนั้นดำเนินการเมธอด Raise() เมธอด Raise() จะส่งอินสแตนซ์เหตุการณ์ไปยังกลไกตรวจสอบสุขภาพโดยอัตโนมัติ จากนั้นกลไกจะแมปเหตุการณ์กับโปรไฟล์และผู้ให้บริการ และส่งต่อเหตุการณ์ให้กับผู้ให้บริการที่ถูกต้อง ในที่สุดผู้ให้บริการก็จะส่งมอบเหตุการณ์ให้กับผู้รับที่ถูกต้อง
การกำหนดค่าการตรวจติดตามสุขภาพ การตรวจติดตามสุขภาพได้รับการกำหนดค่าในพื้นที่ใหม่ในไฟล์ machine.Config หรือ Web.Config คุณสามารถกำหนดค่าส่วนนี้เพื่อตั้งค่าเว็บฮาร์ทบีทที่รายงานสถานะของแอปพลิเคชันเป็นระยะๆ คุณยังสามารถกำหนดค่าแอปพลิเคชันของคุณเพื่อสร้างกิจกรรมและส่งต่อกิจกรรมผ่านผู้ให้บริการต่างๆ
การกำหนดค่าเหตุการณ์จะต้องระบุแต่ละเหตุการณ์ในพื้นที่การแมปเหตุการณ์ เหตุการณ์จะถูกระบุด้วยชื่อที่ไม่ซ้ำและประเภทที่สมบูรณ์ ชื่อเหตุการณ์ถูกใช้เป็นลิงก์ในพื้นที่กฎ
รายการ 6 พื้นที่การแมปเหตุการณ์
<!-- การแมปเหตุการณ์กำหนดเหตุการณ์ที่ถูกตรวจสอบ -->
<การแมปเหตุการณ์>
<เพิ่มชื่อ = "SampleWebRequests"
type="Samples.AspNet.SampleWebRequestEvent, SampleWebRequestEvent,
เวอร์ชัน=0.0.0.0 วัฒนธรรม=เป็นกลาง PublicKeyToken=f0c63b9a560d5e5a"/>
</eventMappings>
ASP.NET 2.0 มาพร้อมกับเหตุการณ์ในตัวหลายเหตุการณ์ กำหนดค่าด้วยชื่อต่อไปนี้:
• เหตุการณ์ทั้งหมด ชื่อเหตุการณ์ทั้งหมดจับ WebBaseEvent ใด ๆ คลาสเหตุการณ์นี้เป็นการรวบรวมทั้งหมดอย่างกว้างๆ สำหรับทุกเหตุการณ์ที่บันทึกโดยระบบติดตามสุขภาพ
• การเต้นของหัวใจ เหตุการณ์ Heartbeat ใช้ WebHeartBeatEvent เพื่อแจ้งเตือนเป็นระยะเกี่ยวกับสถานะของแอปพลิเคชันเว็บ
• เหตุการณ์ตลอดอายุการใช้งานของแอปพลิเคชัน เหตุการณ์อายุการใช้งานของแอปพลิเคชันรวมถึงการเริ่มและการหยุดแอปพลิเคชัน และการคอมไพล์ใหม่บางส่วนหรือทั้งหมดของแอปพลิเคชัน เหตุการณ์เหล่านี้อิงตาม WebApplicationLifetimeEvent และรายงานวันที่ เวลา และสถานะปัจจุบันเมื่อเหตุการณ์ตลอดชีพเกิดขึ้น
• ข้อผิดพลาดทั้งหมด หมวดหมู่ข้อผิดพลาดทั้งหมดจะรวบรวมความผิดปกติหรือข้อผิดพลาดที่ระบบตรวจพบ เหตุการณ์เหล่านี้จะขึ้นอยู่กับ WebBaseErrorEvent
• ข้อผิดพลาดของโครงสร้างพื้นฐาน ใช้ WebErrorEvent เพื่อตรวจจับข้อผิดพลาดที่เกี่ยวข้องกับรันไทม์ ASP.NET หรือ IIS เหตุการณ์เหล่านี้เป็นคลาสย่อยของหมวดหมู่ข้อผิดพลาดทั้งหมด และเกี่ยวข้องกับผู้ดูแลระบบเป็นหลักมากกว่าผู้พัฒนาแอปพลิเคชัน
• ข้อผิดพลาดในการประมวลผลคำขอ ข้อผิดพลาดหรือข้อยกเว้นใดๆ ที่เกิดขึ้นระหว่างการร้องขอจะทำให้เกิด WebRequestErrorEvent เหตุการณ์นี้จะบันทึกคำขอที่เข้ามาและข้อผิดพลาดที่เกี่ยวข้องกับการประมวลผลคำขอ ข้อผิดพลาดในการประมวลผลคำขอยังเป็นส่วนหนึ่งของหมวดหมู่ข้อผิดพลาดทั้งหมดอีกด้วย
• บทวิจารณ์ทั้งหมด คุณสามารถใช้ระบบการตรวจติดตามสุขภาพเพื่อให้มีความพยายามในการตรวจสอบผ่าน WebAuditEvents เหตุการณ์นี้จะบันทึกการกระทำของผู้ใช้ที่ใช้งานอยู่ในเว็บแอปพลิเคชันโดยอัตโนมัติ หากคุณใช้การแอบอ้างบุคคลอื่น กิจกรรมการตรวจสอบจะช่วยให้คุณติดตามว่าใครกำลังใช้แอปพลิเคชันของคุณ และมีการใช้แอปพลิเคชันเหล่านั้นอย่างไร
• การตรวจสอบความล้มเหลว WebFailureAuditEvent เป็นประเภทเหตุการณ์การตรวจสอบพิเศษที่เกิดขึ้นเมื่อผู้ใช้พยายามเข้าสู่ระบบเว็บไซต์ของคุณด้วยชื่อผู้ใช้หรือรหัสผ่านที่ไม่ถูกต้อง เหตุการณ์นี้ยังเกิดขึ้นเมื่อผู้ใช้ไม่สามารถตรวจสอบสิทธิ์สำหรับทรัพยากรที่ระบุได้
• การตรวจสอบที่ประสบความสำเร็จ WebSuccessAuditEvent เป็นเหตุการณ์ที่เหมือนกับเหตุการณ์ความล้มเหลวที่เกิดขึ้นเมื่อใดก็ตามที่ผู้ใช้ตรวจสอบสิทธิ์หรือดำเนินการอื่นๆ ที่ต้องมีการบันทึกการตรวจสอบ
เหตุการณ์แบบกำหนดเองนั้นสร้างได้ง่าย แม้ว่าคุณจะต้องเพิ่มโค้ดลงในแอปพลิเคชันของคุณเพื่อยกระดับเหตุการณ์ก็ตาม
การกำหนดค่าผู้ให้บริการ ผู้ให้บริการแต่ละรายจะต้องลงทะเบียนในไฟล์การกำหนดค่า การลงทะเบียนผู้ให้บริการจำเป็นต้องมีชื่อและประเภทเฉพาะของแอปพลิเคชัน ประเภทนี้ประกอบด้วยชื่อเต็มของคลาสผู้ให้บริการจริง ชื่อของผู้ให้บริการจะถูกใช้เป็นลิงค์ในพื้นที่กฎ
รายการ 7. ผู้ให้บริการ
<healthMonitoring Enabled="true" heartBeatInterval="0">
<!-- ผู้ให้บริการเชื่อมโยงกิจกรรมด้านสุขภาพกับเป้าหมายต่างๆ เช่น อีเมล WMI หรือ SMTP -->
<ผู้ให้บริการ>
< เพิ่มชื่อ = "WmiEventProvider" ชนิด = "System.Web.Management.WebWmiEventProvider,
System.Web เวอร์ชัน = 1.2.3400.0 วัฒนธรรม = เป็นกลาง PublicKeyToken = b03f5f7f11d50a3a "/>
</ผู้ให้บริการ>
ASP.NET 2.0 มาพร้อมกับผู้ให้บริการสำหรับฐานข้อมูล WMI, Windows Event Monitor, อีเมล SMTP และ SQL Server ด้วยการขยายคลาสฐานที่ถูกต้อง คุณสามารถสร้างผู้ให้บริการแบบกำหนดเองเพื่อเชื่อมต่อกับตัวรับเหตุการณ์อื่นๆ ได้
การจับคู่เหตุการณ์กับผู้ให้บริการ
ขั้นตอนสุดท้ายในการกำหนดค่าการตรวจติดตามสุขภาพคือการเชื่อมต่อเหตุการณ์กับผู้ให้บริการด้วยกฎเกณฑ์ กฎจะเชื่อมโยงระหว่างชื่อกิจกรรมที่ดี คลาสกิจกรรม ผู้ให้บริการ และโปรไฟล์หรือหมวดหมู่กิจกรรม คุณยังสามารถใช้กฎเพื่อกำหนดช่วงเวลาขั้นต่ำสำหรับการทริกเกอร์เหตุการณ์เฉพาะได้
รายการ 8. กฎ
<!-- กฎเชื่อมโยงเหตุการณ์กับผู้ให้บริการและโปรไฟล์ และกำหนดช่วงเวลาสำหรับการตรวจสอบเหตุการณ์ -->
<กฎ>
<เพิ่มชื่อ = "เหตุการณ์ฐานข้อมูลที่กำหนดเอง" eventName = "CustomDBEvents"
ผู้ให้บริการ = "WmiEventProvider" โปรไฟล์ = "ฐานข้อมูล" minInterval = "00:01:00" />
<add name = "คำขอเว็บมาตรฐาน" eventName = "เหตุการณ์ทั้งหมด"
ผู้ให้บริการ = "SqlEventProvider" โปรไฟล์ = "ค่าเริ่มต้น" minInterval = "00:01:00" /> </ กฎ>
</การตรวจสอบสุขภาพ>
กฎทำงานหลายอย่างที่กำหนดค่าโดยคุณสมบัติที่แตกต่างกัน:
• ชื่อ ชื่อกฎคือชื่อที่จำง่ายที่ปรากฏขึ้นเมื่อมีการส่งเหตุการณ์ไปยังผู้รับ
• ชื่อเหตุการณ์. eventName แมปกับเหตุการณ์ที่กำหนดค่าในโซน
• ผู้ให้บริการ ผู้ให้บริการคือลิงก์ไปยังผู้ให้บริการที่กำหนดค่าไว้ในโซน เหตุการณ์ใดๆ ที่ตรงกับกฎนี้จะถูกส่งผ่านผู้ให้บริการนี้ไปยังเป้าหมายที่ผู้ให้บริการรายนี้รองรับ ตัวอย่างเช่น System.Web.Management.SqlWebEventProvider จะเขียนเหตุการณ์ลงในฐานข้อมูล SQL Server โดยอัตโนมัติ
• ประวัติโดยย่อ. ผู้ให้บริการแต่ละรายใช้คุณสมบัติโปรไฟล์เป็นตัวกรองสำหรับการแสดงกิจกรรม ตัวอย่างเช่น ผู้ให้บริการอีเมลอาจส่งข้อความทันทีสำหรับกิจกรรมใดๆ ที่มีโปรไฟล์ "ด่วน" แต่ก็อาจส่งอีเมลรายวันพร้อมการรวบรวมกิจกรรมโปรไฟล์ "ประจำ" สำหรับวันนั้นด้วย
• ช่วงเวลาขั้นต่ำ เหตุการณ์บางอย่าง เช่น การเต้นของหัวใจ จะต้องดำเนินการภายในช่วงเวลาที่สั้นที่สุดเท่าที่จะเป็นไปได้ คุณสามารถใช้คุณสมบัตินี้เพื่อกำหนดช่วงเวลาเหตุการณ์ขั้นต่ำ
พื้นที่การกำหนดค่านี้ช่วยให้คุณสามารถตั้งค่าเหตุการณ์ที่เกี่ยวข้องกับสุขภาพต่างๆ และแมปเหตุการณ์กับผู้ให้บริการต่างๆ ตัวอย่างเช่น คุณอาจตั้งค่าฮาร์ทบีทที่ส่งเหตุการณ์ WMI ทุกๆ 10 นาที ในทำนองเดียวกัน คุณสามารถตั้งค่าการแจ้งเตือนทางอีเมลสำหรับข้อยกเว้นที่ตรวจไม่พบได้
บทความที่เกี่ยวข้อง:
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B893664
http://blog.csdn.net/dshpsky/archive/2006/06/18/810893.aspx