/*------------------------------------------------ ----------------
* حقوق الطبع والنشر (ج)
* جميع الحقوق محفوظة.
*
* اسم الملف: 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=" + key);
* 3. احصل على رسالة الخطأ من المفتاح الذي تم تمريره عبر عنوان URL في error.aspx وعرضها:
* خطأ السلسلة = ErrorManager.Instance.GetError(مفتاح)
* أول 19 حرفًا في الخطأ هي الوقت الذي حدث فيه الخطأ، متبوعًا برسالة الخطأ.
* 4. من أجل اكتشاف أخطاء مهلة الجلسة بدلاً من إرجاع رسالة الخطأ التي تفيد بأن الجلسة [المفتاح] فارغة، تضيف هذه الفئة GetSession()
* ووظيفة SetSession لإدارة الجلسة بشكل موحد في المستقبل، لا يمكن قراءة الجلسة مباشرة في aspx، ولكن يجب قراءتها من خلال هذه الفئة.
*
*
* إنشاء الشعار:
*
*تعديل الشعار:
*تعديل الوصف:
*
*تعديل الشعار:
*تعديل الوصف:
*------------------------------------------------ - --------------*/
باستخدام النظام؛
باستخدام System.Data؛
باستخدام System.Configuration؛
باستخدام 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;
خاص Hashtable m_htErr
/**//// <summary>
/// منشئ خاص
/// </الملخص>
مدير الأخطاء الخاص ()
{
this.m_timer = new System.Timers.Timer();
this.m_timer.Enabled = false;
this.m_timer.Interval = 12 * 60 * 60 * 1000؛ // يتم تنفيذه مرة واحدة كل 12 ساعة بشكل افتراضي
this.m_timer.Elapsed += new System.Timers.ElapsedEventHandler(m_timer_Elapsed);
this.m_htErr = new Hashtable();
}
/**//// <summary>
/// واجهة الوضع الفردي
/// </الملخص>
مثيل ErrorManager الثابت العام للقراءة فقط = new ErrorManager()
/**//// <summary>
/// اضبط تردد المؤقت بالمللي ثانية
/// </الملخص>
/// <param name="Interval">ميلي ثانية</param>
الفراغ العام SetTimerInterval (الفاصل الزمني)
{
this.m_timer.Interval = Interval;
}
/**//// <summary>
/// يبدأ الموقت
/// </الملخص>
TimerStart () الفراغ العام
{
this.m_timer.Enabled = true;
}
/**//// <summary>
/// ينتهي الموقت
/// </الملخص>
TimerStop () الفراغ العام
{
this.m_timer.Enabled = false;
}
/**//// <summary>
/// حدث خطأ. احفظ معلومات الخطأ وأعد معرف الخطأ لسهولة القراءة على الصفحة.
/// </الملخص>
/// <returns>أرجع المعرف الخاطئ</returns>
سلسلة عامة AddError ()
{
مفتاح السلسلة = Guid.NewGuid().ToString();
سلسلة الرسالة = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+ HttpContext.Current.Server.GetLastError().GetBaseException().Message;
this.m_htErr.Add(key, msg);
HttpContext.Current.Server.ClearError()
;
}
/**//// <summary>
/// إرجاع رسالة الخطأ للمفتاح المحدد، أول 19 حرفًا هي وقت حدوث الخطأ.
/// </الملخص>
/// <param name="key">المفتاح هو دليل</param>
/// <returns>إرجاع رسالة الخطأ</returns>
سلسلة GetError العامة (مفتاح السلسلة)
{
إرجاع this.m_htErr[key].ToString();
}
/**//// <summary>
/// مسح معلومات الخطأ في جدول التجزئة بانتظام
/// </الملخص>
/// <param name="sender"></param>
/// <param name="e"></param>
الفراغ الخاص m_timer_Elapsed (مرسل الكائن، System.Timers.ElapsedEventArgs e)
{
قائمة ArrayList = new ArrayList();
قفل (this.m_htErr)
{
DateTime الآن = DateTime.Now;
TimeSpan ts;
foreach (مفتاح السلسلة في this.m_htErr.Keys)
{
// أول 19 حرفًا هي تاريخ حدوث الخطأ، yyyy-MM-dd HH:mm:ss
string time = this.m_htErr[key].ToString().Substring(0, 19);
ts = now - Convert.ToDateTime(time);
إذا (ts.TotalMinutes > 20) // امسح معلومات الخطأ قبل 20 دقيقة من جدول التجزئة
list.Add(key);
}
foreach (مفتاح السلسلة في القائمة)
{
this.m_htErr.Remove(key);
}
}
}
تغليف عمليات الجلسة # المنطقة تغليف عمليات الجلسة
/**//// <الملخص>
/// احصل على جلسة القيمة الرئيسية المحددة
/// </الملخص>
/// <param name="key">قيمة المفتاح</param>
/// <returns>قيمة المحتوى الرئيسي</returns>
الكائن العام GetSession (مفتاح السلسلة)
{
كائن فال = HttpContext.Current.Session[key];
إذا (فال == فارغ)
طرح استثناء جديد("انتهت مهلة الصفحة، يرجى تسجيل الدخول مرة أخرى.")
;
}
/**//// <summary>
/// إعداد الجلسة
/// </الملخص>
/// <param name="key">قيمة المفتاح</param>
/// <param name="val">المحتوى الرئيسي</param>
SetSession الفراغ العام (مفتاح السلسلة، قيمة الكائن)
{
HttpContext.Current.Session[key] = val;
}
#endregion
}
http://www.cnblogs.com/81/archive/2006/08/16/478175.html