/*------------------------------------------------ ----------------
* ลิขสิทธิ์ (ค)
* สงวนลิขสิทธิ์.
-
* ชื่อไฟล์: ErrorManager.cs
* คำอธิบายฟังก์ชัน: การซ่อมแซมข้อผิดพลาดแบบรวมใน asp.net เพื่อให้ตรงกับหมวดหมู่นี้ จำเป็นต้องเพิ่มหน้าแสดงข้อมูลข้อผิดพลาด เช่น error.aspx
-
* คำแนะนำในการใช้งาน: 1. เริ่มจับเวลาใน Application_Start() (ล้างข้อมูลข้อผิดพลาดเป็นประจำ): ErrorManager.Instance.Start()
* ตามค่าเริ่มต้น จะทำงานทุกๆ 12 ชั่วโมง หรือตั้งค่าโดยใช้ ErrorManager.Instance.SetTimerInterval()
* 2. ใน Application_Error() เมื่อมีข้อผิดพลาดเกิดขึ้น ให้บันทึกข้อมูลข้อผิดพลาดและไปที่ error.aspx เพื่อแสดงข้อผิดพลาด
* คีย์สตริง = ErrorManager.Instance.AddError();
* Response.Redirect("error.aspx?key=" + คีย์);
* 3. รับและแสดงข้อความแสดงข้อผิดพลาดจากคีย์ที่ส่งผ่าน URL ใน error.aspx:
* string err = ErrorManager.Instance.GetError(คีย์)
* ข้อผิดพลาด 19 ตัวแรกคือเวลาที่เกิดข้อผิดพลาด ตามด้วยข้อความแสดงข้อผิดพลาด
* 4. เพื่อตรวจจับข้อผิดพลาดการหมดเวลาของเซสชันแทนที่จะส่งคืนข้อความแสดงข้อผิดพลาดว่า Session[key] เป็นโมฆะ คลาสนี้จะเพิ่ม GetSession()
* และฟังก์ชัน SetSession เพื่อจัดการ Session อย่างสม่ำเสมอ ในอนาคต Session ไม่สามารถอ่านได้โดยตรงใน aspx แต่จะต้องอ่านผ่านคลาสนี้
-
-
*สร้างโลโก้:
-
*แก้ไขโลโก้:
*แก้ไขคำอธิบาย:
-
*แก้ไขโลโก้:
*แก้ไขคำอธิบาย:
*------------------------------------------------ - --------------*/
ใช้ระบบ;
ใช้ System.Data;
โดยใช้ระบบการกำหนดค่า;
ใช้ System.Web;
โดยใช้ System.Web.Security;
โดยใช้ System.Web.UI;
ใช้ System.Web.UI.WebControls;
ใช้ System.Web.UI.WebControls.WebParts;
ใช้ System.Web.UI.HtmlControls;
ใช้ System.Collections;
/**////// <summary>
/// คำอธิบายโดยสรุปสำหรับข้อผิดพลาด
/// </สรุป>
ErrorManager คลาสสาธารณะ
-
System.Timers.Timer ส่วนตัว m_timer;
แฮชเทเบิลส่วนตัว m_htErr;
/**//// <สรุป>
/// คอนสตรัคเตอร์ส่วนตัว
/// </สรุป>
ผู้จัดการข้อผิดพลาดส่วนตัว ()
-
this.m_timer = System.Timers.Timer ใหม่ ();
this.m_timer.Enabled = เท็จ;
this.m_timer.Interval = 12 * 60 * 60 * 1,000; // ดำเนินการทุกๆ 12 ชั่วโมงตามค่าเริ่มต้น
this.m_timer.Elapsed += ระบบตัวจับเวลาใหม่ ElapsedEventHandler (m_timer_Elapsed);
this.m_htErr = ใหม่ Hashtable();
}
/**//// <สรุป>
/// อินเทอร์เฟซโหมดซิงเกิลตัน
/// </สรุป>
อินสแตนซ์ ErrorManager แบบอ่านอย่างเดียวสาธารณะ = new ErrorManager();
/**////// <summary>
/// ตั้งค่าความถี่ของตัวจับเวลาเป็นมิลลิวินาที
/// </สรุป>
/// <param name="Interval">มิลลิวินาที</param>
โมฆะสาธารณะ SetTimerInterval (ช่วง int)
-
this.m_timer.Interval = ช่วงเวลา;
}
/**//// <สรุป>
/// เริ่มจับเวลา
/// </สรุป>
โมฆะสาธารณะ TimerStart()
-
this.m_timer.Enabled = จริง;
}
/**//// <สรุป>
/// เวลาสิ้นสุด
/// </สรุป>
โมฆะสาธารณะ TimerStop()
-
this.m_timer.Enabled = เท็จ;
}
/**//// <สรุป>
/// เกิดข้อผิดพลาด บันทึกข้อมูลข้อผิดพลาดและส่งคืน ID ข้อผิดพลาดเพื่อให้อ่านง่ายในหน้า
/// </สรุป>
/// <returns>ส่งคืน ID ที่ไม่ถูกต้อง</returns>
สตริงสาธารณะ AddError()
-
คีย์สตริง = Guid.NewGuid().ToString();
string msg = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+ HttpContext.Current.Server.GetLastError().GetBaseException().ข้อความ;
this.m_htErr.Add (คีย์, ผงชูรส);
HttpContext.Current.Server.ClearError ()
;
}
/**//// <สรุป>
/// ส่งกลับข้อความแสดงข้อผิดพลาดของคีย์ที่ระบุ อักขระ 19 ตัวแรกเป็นเวลาที่เกิดข้อผิดพลาด
/// </สรุป>
/// <param name="key">key คือ guid</param>
/// <returns>ข้อความแสดงข้อผิดพลาดในการส่งคืน</returns>
สตริงสาธารณะ GetError (คีย์สตริง)
-
กลับ this.m_htErr[คีย์].ToString();
}
/**//// <สรุป>
/// ล้างข้อมูลข้อผิดพลาดใน Hashtable เป็นประจำ
/// </สรุป>
/// <ชื่อพารามิเตอร์ = "ผู้ส่ง" ></ พารามิเตอร์>
/// <ชื่อพารามิเตอร์ = "e" ></ พารามิเตอร์>
โมฆะส่วนตัว m_timer_Elapsed (ผู้ส่งวัตถุ System.Timers.ElapsedEventArgs e)
-
รายการ ArrayList = ใหม่ ArrayList();
ล็อค (this.m_htErr)
-
DateTime ตอนนี้ = DateTime.Now;
ช่วงเวลา ts;
foreach (คีย์สตริงใน this.m_htErr.Keys)
-
//อักขระ 19 ตัวแรกคือวันที่ที่เกิดข้อผิดพลาด yyyy-MM-dd HH:mm:ss
เวลาสตริง = this.m_htErr [คีย์] .ToString (). Substring (0, 19);
ts = ตอนนี้ - Convert.ToDateTime (เวลา);
if (ts.TotalMinutes > 20) //ล้างข้อมูลข้อผิดพลาดเมื่อ 20 นาทีที่แล้วจาก hashtable
list.Add(สำคัญ);
}
foreach (คีย์สตริงในรายการ)
-
this.m_htErr.Remove (คีย์);
-
}
}
การสรุปการดำเนินการเซสชัน#ภูมิภาค การสรุปการดำเนินการเซสชัน
/***////// <สรุป>
/// รับเซสชันของค่าคีย์ที่ระบุ
/// </สรุป>
/// <param name="key">ค่าคีย์</param>
/// <returns>ค่าเนื้อหาที่สำคัญ</returns>
วัตถุสาธารณะ GetSession (คีย์สตริง)
-
วัตถุ val = HttpContext.Current.Session [คีย์];
ถ้า (val == null)
โยนข้อยกเว้นใหม่ ("เพจหมดเวลา กรุณาเข้าสู่ระบบอีกครั้ง")
;
}
/**//// <สรุป>
/// ตั้งค่าเซสชัน
/// </สรุป>
/// <param name="key">ค่าคีย์</param>
/// <param name="val">เนื้อหาสำคัญ</param>
SetSession โมฆะสาธารณะ (คีย์สตริง, วาลวัตถุ)
-
HttpContext.Current.Session[คีย์] = val;
-
#ภูมิภาคสุดท้าย
-
http://www.cnblogs.com/81/archive/2006/08/16/478175.html