利用IHttpModule记录系统出错页面及出错信息,并转到错误页面.
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
namespace H3CPLAM
{
public class SystemErrorHttpModule:IHttpModule
{
#region IHttpModule 成员
public void Dispose()
{
throw new NotImplementedException();
}
public void Init(HttpApplication httpApplication)
{
httpApplication.Error+=new EventHandler(httpApplication_Error);
// httpApplication.BeginRequest+=new EventHandler(httpApplication_BeginRequest);
}
/* private void httpApplication_BeginRequest(object sender, EventArgs e)
{
HttpApplication httpApplication = (HttpApplication)sender;
HttpContext httpContext = httpApplication.Context;
string strPath1 = HttpContext.Current.Request.FilePath;
string strFileEx = VirtualPathUtility.GetExtension(strPath1);
if(strFileEx.Equals(".aspx"))
{
HttpContext.Current.Response.Write ("<h1>HelloWorldHttpModule</h1>");
}
}
*/
private void httpApplication_Error(object sender, EventArgs e)
{
HttpApplication httpApplication = (HttpApplication)sender;
string strMessage=httpApplication.Context.Error.InnerException.Message+" "+httpApplication.Request.Path;
string strPath = @"D:\Message.txt";
if (File.Exists(strPath))
{
httpApplication.Response.Redirect("~\Error.aspx");
StreamWriter sw=File.CreateText(strPath);
sw.WriteLine(strMessage);
sw.Flush();
sw.Close();
}
else
{
httpApplication.Response.Redirect("~\Error.aspx");
StreamWriter sw = File.AppendText(strPath);
sw.WriteLine(strMessage);
sw.Flush();
sw.Close();
}
}
#endregion
}
}
注:要在web.config中的<httpModules>节添加如下处理行:
<add name ="SystemErrorHttpModule" type ="H3CPLAM.SystemErrorHttpModule"/>