1. Entwerfen Sie XML, das die folgenden Informationen enthalten sollte:
1. Datum/Uhrzeit: Datum und Uhrzeit des Auftretens des Fehlers/der Ausnahme
2. Dateiname: Der Dateiname, in dem der Fehler/die Ausnahme aufgetreten ist
3. Klassenname: der Klassenname, in dem der Fehler/die Ausnahme aufgetreten ist
4. Methodenname: Der Name der Methode, bei der der Fehler/die Ausnahme aufgetreten ist
5. Fehlermethode: Funktionsname, der den Fehlercode enthält
6. Meldung: Fehler-/Ausnahmeinformationen
7. Fehlerdetails: Fehler-/Ausnahmedetails
8. IP: Client-IP-Adresse
9. URL: URL, unter der der Fehler aufgetreten ist
DemoXML:
DemoXML
<?xml version="1.0"kodierung="utf-8"?>
<Fehlerprotokoll>
<Fehler>
<datetime>datetime</datetime>
<Dateiname>Dateiname</Dateiname>
<Klassenname>Klassenname</Klassenname>
<Methodenname>Methodenname</Methodenname>
<errormethod>errormethod</errormethod>
<messsage>Fehlermeldung</messsage>
<errordetails>Details finden Sie hier</errordetails>
<IP>IP-Adresse</IP>
<url>URL</url>
</error>
</errorlog>
2. Entwerfen Sie die Fehlerbehandlungsklasse: errorHandler.cs. Die darin enthaltene WriteError-Methode erfordert zwei Parameter: Exception und FileName:
errorHandler.cs
Verwenden des Systems;
mit System.Collections.Generic;
Verwenden von System.Text;
mit System.Xml;
Verwenden von System.Reflection;
Verwenden von System.Diagnostics;
Namespace code_center
{
öffentliche Klasse errorHandler
{
string _strErrorMessage, _strDetails, _strClassName, _strMethodName;
DateTime _dtOccuranceTime = new DateTime();
öffentlicher errorHandler()
{
}
public errorHandler(DateTime time, string className, string methodName,
Zeichenfolge errorMessage, Zeichenfolgendetails)
{
_dtOccuranceTime = Zeit;
_strClassName = className;
_strDetails = Details;
_strErrorMessage = errorMessage;
_strMethodName = methodName;
}
public static void WriteError(Exception ex)
{
WriteError(ex, "");
}
public static void WriteError(Exception ex, string fileName)
{
XmlDocument doc = new XmlDocument();
string 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);
MethodBase methodBase = 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. Fügen Sie Web.config hinzu:
<appSettings>
<add key="logfilepath" value="~/errorHandling/errorlog.xml"/>
</appSettings>
4. Test: Fügen Sie Ihrer Website zwei Teile Testcode hinzu
1. In Page_Load:
Page_Load
öffentliche Teilklasse _Default: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
versuchen
{
throw new Exception("Benutzerdefinierter Fehler");
}
Catch (Ausnahme ex)
{
Response.Write(ex.Message);
kirin.errorHandler.WriteError(ex, „Default.aspx.cs“);
}
}
}
2. Hinzufügen: zu Application_Error:
void Application_Error(object sender, EventArgs e)
{
code_center.errorHandler.WriteError(Server.GetLastError().GetBaseException(),
„Global.asax“);
}
3. Ergebnisse der Page_Load-Ausnahme:
errorXML
<Fehler>
<datetime>29.01.2010 9:29:24</datetime>
<filename>Default.aspx.vb</filename>
<classname>kirin._Default</classname>
<methodname>Page_Load</methodname>
<errormethod>Page_Load</errormethod>
<messsage>Benutzerdefinierter Fehler</messsage>
<errordetails> In kirin._Default.Page_Load(Object sender, EventArgs e) Speicherort C:Demokirin_code_centerkirinDefault.aspx.cs: Zeilennummer 16</errordetails>
<IP>127.0.0.1</IP>
<url>http://localhost:2192/default.aspx</url>
</error>
5. Vollständiger Code:/Files/zhuqil/kirin_errorHandler.rar
Autor: Zhu Qilin Quelle: http://zhuqil.cnblogs.com
Das Urheberrecht dieses Artikels liegt beim Autor und bei Blog Park. Ein Nachdruck ist jedoch ohne Zustimmung des Autors gestattet und ein Link zum Originaltext muss an einer offensichtlichen Stelle auf der Artikelseite angebracht werden. die Geltendmachung einer gesetzlichen Haftung bleibt vorbehalten.