ใน ASP.NET 2.0 สามารถตรวจสอบเหตุการณ์ได้โดยใช้แอตทริบิวต์ healthMonitoring แอ็ตทริบิวต์ healthMonitoring เป็นผู้ให้บริการตามวิธีการที่คุณสามารถสร้างผู้ให้บริการของคุณเองได้ การใช้แอตทริบิวต์ healthMonitoring ทำให้เราสามารถบันทึกข้อผิดพลาด เหตุการณ์ที่สำเร็จ ฯลฯ สำหรับแหล่งข้อมูลที่แตกต่างกัน เช่น บันทึกเหตุการณ์, Sql Server และแม้กระทั่งสร้างผู้ให้บริการของเราเองโดยสืบทอดคลาส WebEventProvider ในบทความนี้ ผมจะอธิบายการกำหนดค่าเว็บแอปพลิเคชันที่ตรวจพบข้อผิดพลาด SqlServer และส่งอีเมลไปยังที่อยู่อีเมลของผู้อื่น ขั้นแรก ให้ดูที่ส่วนของโปรแกรม healthMonitoring ใน web.config ซึ่งคุณสามารถสร้างเหตุการณ์ที่คุณจะใช้
<healthMonitoring Enabled="true|false" heartBeatInterval="ช่วงเวลา">
<bufferModes>... </bufferModes>
<ผู้ให้บริการ>... </ผู้ให้บริการ>
<eventMappings>... </eventMappings>
<โปรไฟล์>... </โปรไฟล์>
<กฎ>... </กฎ>
</healthMonitoring>
หากคุณดูที่องค์ประกอบ <healthMonitoring> คุณสามารถระบุได้ว่าคุณสามารถตั้งค่าแอตทริบิวต์ให้ถูกต้องหรือไม่ถูกต้องได้ และคุณยังสามารถระบุช่วงเวลาสำหรับ WebHeaderBeatEvent ที่จะปลุกได้อีกด้วย การตรวจสุขภาพมีลูก 5 คน
bufferModes ซึ่งคุณสามารถกำหนดขนาดบัฟเฟอร์ของผู้ให้บริการได้
ผู้ให้บริการ ในที่นี้จะอธิบายถึงผู้ให้บริการที่จัดการเหตุการณ์
eventMappings คุณสามารถวาดชื่อเหตุการณ์ที่เกี่ยวข้องกับประเภทเหตุการณ์ที่เป็นมิตรได้ที่นี่
โปรไฟล์ที่คุณกำหนดคอลเลกชันของชุดพารามิเตอร์ที่สามารถใช้เพื่อกำหนดค่าเหตุการณ์
กฎ วาดกราฟเหตุการณ์ของผู้ให้บริการที่นี่
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับองค์ประกอบเหล่านี้ได้ในเอกสาร VS 2550
ก่อนดำเนินการต่อ นี่คือรายชื่อผู้ให้บริการบางรายใน ASP.NET:
System.Web.Management.MailWebEventProvider
System.Web.Management.SimpleMailWebEventProvider
System.Web.Management.TemplatedMailWebEventProvider
System.Web.Management.TraceWebEventProvider
System.Web.Management.EventLogWebEventProvider
System.Web.Management.SqlWebEventProvider
System.Web.Management.WmiWebEventProvider
ไม่จำเป็นต้องอธิบายสิ่งเหล่านี้ ชื่อบอกเราว่าพวกเขาทำอะไร นอกจากนี้ ยังกล่าวถึงด้วยว่า SqlWebEventProvider อาศัยเซิร์ฟเวอร์ Sql ในการทำงาน ซึ่งจัดเก็บเหตุการณ์ไว้ในตาราง aspnet_Web_Event ในการติดตั้งฐานข้อมูลนี้ จะต้องเรียกใช้วิซาร์ด aspnet_regsql.exe ที่อยู่ในโฟลเดอร์เฟรมเวิร์ก
ตอนนี้กำหนดค่าโปรแกรมให้มีข้อผิดพลาดในการเข้าสู่ระบบสำหรับผู้ให้บริการเซิร์ฟเวอร์ Sql และสร้างข้อผิดพลาดเมื่อส่งอีเมล
ต่อไปนี้เป็นตัวอย่างของการใช้ SqlWebEventProvider และ SimpleMailWebEventProvider เพื่อจัดเก็บเหตุการณ์ข้อผิดพลาด
<healthMonitoring เปิดใช้งาน = "true" heartBeatInterval = "0">
<โหมดบัฟเฟอร์>
<เพิ่มชื่อ = "การแจ้งเตือนที่สำคัญ" maxBufferSize = "100" maxFlushSize = "20"urgentFlushThreshold = "1" RegularFlushInterval = "Infinite" UrgentFlushInterval = "00:01:00" maxBufferThreads = "1"/> <
เพิ่มชื่อ = "การวิเคราะห์ " maxBufferSize="1000" maxFlushSize="100" เร่งด่วนFlushThreshold="100"
RegularFlushInterval="00:05:00" UrgentFlushInterval="00:01:00" maxBufferThreads="1"/>
</bufferModes>
<ผู้ให้บริการ>
<เพิ่มชื่อ = "CriticalMailEventProvider" ชนิด = "System.Web.Management.SimpleMailWebEventProvider, System.Web ... " จาก[email protected] ถึง = [email protected] ลำดับความสำคัญ = "สูง" bodyHeader = " คำเตือน!"
bodyFooter = "โปรดตรวจสอบโดยเร็วที่สุด" subjectPrefix = "จำเป็นต้องดำเนินการ" buffer = "true" bufferMode = "การแจ้งเตือนที่สำคัญ" maxEventLength = "4096" maxSize = "4096" maxMessagesPerNotification = "1"/> <
เพิ่มชื่อ = "SqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider, System.Web ..."
ConnectionStringName = "LocalSqlServer" maxEventDetailsLength = "1073741823" buffer = "true"
bufferMode = "การวิเคราะห์"/>
</ผู้ให้บริการ>
<eventMappings>
<เพิ่มชื่อ = "ข้อผิดพลาดทั้งหมด" type="System.Web.Management.WebBaseErrorEvent, System.Web ..."/>
<เพิ่มชื่อ = "ข้อผิดพลาดในการประมวลผลคำขอ" type = "System.Web.Management.WebRequestErrorEvent, System.Web .../>
</eventMappings>
<profiles>
<เพิ่มชื่อ = "ค่าเริ่มต้น" minInstances = "1" maxLimit =" อนันต์" minInterval="00:10:00"/>
</profiles>
<rules>
<add name="ข้อผิดพลาดทั้งหมดเริ่มต้น" eventName = "ข้อผิดพลาดทั้งหมด" provider = "SqlWebEventProvider" profile = "ค่าเริ่มต้น"
minInterval = "00:00:30"/>
<add name = "ข้อผิดพลาดในการประมวลผลคำขอ" eventName = "ข้อผิดพลาดในการประมวลผลคำขอ" provider = "CriticalMailEventProvider" profile = "Default"/>
</rules>
</healthMonitoring>
ในตัวอย่างนี้ ใน ให้ใช้ผู้ให้บริการ Sql เพื่อบันทึกเหตุการณ์ข้อผิดพลาดทั้งหมด และใช้ผู้ให้บริการจดหมายเพื่อส่งข้อความเมื่อมีการปลุกเหตุการณ์ข้อผิดพลาดคำขอเว็บ
ต่อไปนี้เป็นเหตุการณ์บางส่วนที่เผยแพร่ด้วย ASP .NET 2.0:
System.Web.Management.WebBaseEvent
System.Web.Management.WebHeartBeatEvent
System.Web.Management.WebApplicationLifetimeEvent
System.Web.Management.WebRequestEvent
System.Web.Management.WebBaseErrorEvent
System.Web.Management.WebErrorEvent
System.Web.Management.WebRequestErrorEvent
System.Web.Management.WebAuditEvent
System.Web.Management.WebFailureAuditEvent
System.Web.Management.WebSuccessAuditEvent
System.Web.Management.WebManagementEvent
System.Web.Management.WebViewStateFailureAuditEvent
System.Web.Management.WebAuthenticationFailureAuditEvent
System.Web.Management.WebAuthenticationSuccessAuditEvent
สามารถใช้เหตุการณ์เหล่านี้เพื่อสร้างโปรไฟล์ผู้ให้บริการได้ คุณยังสามารถสร้างเหตุการณ์ของคุณเองที่สืบทอดมาจากคลาส WebBaseEvent
หากต้องการปลุกเหตุการณ์โดยอัตโนมัติ คุณสามารถใช้วิธีการปลุกของคลาส WebBaseEvent:
ลอง
-
-
}
จับ (ยกเว้น e)
-
ถ้า (HealthMonitoringManager.Enabled)
-
WebBaseEvent.Raise (WebErrorEvent ใหม่ ("ข้อความแสดงข้อผิดพลาดของฉัน", null, 5000, e));
-
}
หรือ:
ถ้า (HealthMonitoringManager.Enabled)
-
เหตุการณ์ WebErrorEvent = WebErrorEvent ใหม่ ("ข้อความแสดงข้อผิดพลาดของฉัน", null, 5000, e);
เหตุการณ์ยก();
-