1. تصميم ملف xml والذي يجب أن يحتوي على المعلومات التالية:
1. التاريخ والوقت: التاريخ والوقت الذي حدث فيه الخطأ/الاستثناء
2. اسم الملف: اسم الملف الذي حدث فيه الخطأ/الاستثناء
3. اسم الفئة: اسم الفئة التي حدث فيها الخطأ/الاستثناء
4. اسم الطريقة: اسم الطريقة التي حدث فيها الخطأ/الاستثناء
5. طريقة الخطأ: اسم الوظيفة الذي يحتوي على رمز الخطأ
6. الرسالة: معلومات الخطأ/الاستثناء
7. تفاصيل الخطأ: تفاصيل الخطأ/الاستثناء
8. IP: عنوان IP للعميل
9. URL: عنوان URL الذي حدث فيه الخطأ
النموذج التجريبي:
DemoXML
<?xml version="1.0" encoding="utf-8"?>
<سجل الأخطاء>
<خطأ>
<datetime>datetime</datetime>
<اسم الملف>اسم الملف</اسم الملف>
<classname>اسم الفئة</classname>
<methodname>اسم الطريقة</methodname>
<errormethod>errormethod</errormethod>
<messsage>رسالة الخطأ</messsage>
<errordetails>تظهر التفاصيل هنا</errordetails>
<IP>عنوان IP</IP>
<url>عنوان URL</url>
</خطأ>
</errorlog>
2. قم بتصميم فئة معالجة الأخطاء: errorHandler.cs تتطلب طريقة WriteError في الداخل معلمتين: الاستثناء واسم الملف:
errorHandler.cs
باستخدام النظام؛
باستخدام System.Collections.Generic؛
باستخدام System.Text؛
باستخدام System.Xml؛
باستخدام System.Reflection؛
باستخدام System.Diagnostics؛
مساحة الاسم code_center
{
معالج خطأ الفئة العامة
{
سلسلة _strErrorMessage، _strDetails، _strClassName، _strMethodName؛
DateTime _dtOccuranceTime = new DateTime();
معالج الخطأ العام ()
{
}
خطأ عام: وقت التاريخ والوقت، اسم فئة السلسلة، اسم طريقة السلسلة،
رسالة خطأ السلسلة، تفاصيل السلسلة)
{
_dtOccuranceTime = time;
_strClassName = className;
_strDetails = التفاصيل؛
_strErrorMessage = errorMessage;
_strMethodName =methodName;
}
خطأ الكتابة العام الثابت (الاستثناء على سبيل المثال)
{
WriteError(ex, "");
}
خطأ الكتابة الثابت العام (الاستثناء على سبيل المثال، اسم ملف السلسلة)
{
XmlDocument doc = new XmlDocument();
سلسلة strRootPath =
System.Configuration.ConfigurationManager.AppSettings["logfilepath"].ToString();
string xmlPath = System.Web.HttpContext.Current.Server.MapPath(strRootPath);
doc.Load(@xmlPath);
XmlNode newXMLNode, oldXMLNode;
oldXMLNode = doc.ChildNodes[1].ChildNodes[0];
newXMLNode = oldXMLNode.CloneNode(true);
StackTrace stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBasemethodBase = stackFrame.GetMethod();
newXMLNode.ChildNodes[0].InnerText = DateTime.Now.ToString();
newXMLNode.ChildNodes[1].InnerText = fileName;
newXMLNode.ChildNodes[2].InnerText =methodBase.DeclaringType.FullName;
newXMLNode.ChildNodes[3].InnerText =methodBase.Name;
newXMLNode.ChildNodes[4].InnerText = ex.TargetSite.Name;
newXMLNode.ChildNodes[5].InnerText = ex.Message;
newXMLNode.ChildNodes[6].InnerText = ex.StackTrace;
newXMLNode.ChildNodes[7].InnerText = System.Web.HttpContext.Current.Request.UserHostAddress;
newXMLNode.ChildNodes[8].InnerText = System.Web.HttpContext.Current.Request.Url.OriginalString;
doc.ChildNodes[1].AppendChild(newXMLNode);
doc.Save(@xmlPath);
doc.RemoveAll();
}
}
}
3. أضف في Web.config:
<إعدادات التطبيق>
<أضف مفتاح = "logfilepath" value = "~/errorHandling/errorlog.xml"/>
</appSettings>
4. الاختبار: أضف قطعتين من كود الاختبار إلى موقع الويب الخاص بك
1. في تحميل الصفحة:
تحميل الصفحة
الفئة العامة الجزئية _Default: System.Web.UI.Page
{
Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
{
يحاول
{
رمي استثناء جديد ("خطأ مخصص")؛
}
قبض (استثناء على سبيل المثال)
{
Response.Write(ex.Message);
kirin.errorHandler.WriteError(ex, "Default.aspx.cs");
}
}
}
2. أضف: إلى خطأ_التطبيق:
خطأ_التطبيق باطلة (مرسل الكائن، EventArgs e)
{
code_center.errorHandler.WriteError(Server.GetLastError().GetBaseException(),
"Global.asax");
}
3. نتائج استثناء Page_Load:
errorXML
<خطأ>
<datetime>2010-1-29 9:29:24</datetime>
<filename>Default.aspx.vb</filename>
<classname>kirin._Default</classname>
<methodname>Page_Load</methodname>
<errormethod>Page_Load</errormethod>
<messsage>خطأ مخصص</messsage>
<errordetails> في kirin._Default.Page_Load(Object sender, EventArgs e) الموقع C:Demokirin_code_centerkirinDefault.aspx.cs: رقم السطر 16</errordetails>
<IP>127.0.0.1</IP>
<url>http://localhost:2192/default.aspx</url>
</خطأ>
5. أكمل الكود:/Files/zhuqil/kirin_errorHandler.rar
المؤلف: تشو تشيلين المصدر: http://zhuqil.cnblogs.com
حقوق الطبع والنشر لهذه المقالة مملوكة للمؤلف ونرحب بإعادة الطباعة، ومع ذلك، يجب الاحتفاظ بهذا البيان دون موافقة المؤلف، ويجب توفير رابط للنص الأصلي في مكان واضح على صفحة المقالة. الحق في متابعة المسؤولية القانونية محفوظ.