参考地址:https://blog.csdn.net/yiyelanxin/article/details/72778972
在Global.asax中,添加Application_Error如下代码.
protected void Application_Error()
{
var e = Server.GetLastError();
var httpError = e as HttpException;
//错误日志
//在出现未处理的错误时运行的代码
Exception ex = Server.GetLastError().GetBaseException();
string errorTime = "异常时间:" + DateTime.Now.ToString();
string errorAddress = "异常地址:" + Request.Url.ToString();
string errorInfo = "异常信息:" + ex.Message;
string errorSource = "错误源:" + ex.Source;
string errorType = "运行类型:" + ex.GetType();
string errorFunction = "异常函数:" + ex.TargetSite;
string errorTrace = "堆栈信息:" + ex.StackTrace;
//Server.ClearError();
System.IO.StreamWriter writer = null;
try
{
lock (this)
{
//写入日志
string path = string.Empty;
path = Server.MapPath("~/ErrorLogs/");
//不存在则创建错误日志文件夹
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
path += string.Format(@"{0}.txt", DateTime.Now.ToString("yyyy-MM-dd"));
writer = !File.Exists(path) ? File.CreateText(path) : File.AppendText(path); //判断文件是否存在,如果不存在则创建,存在则添加
writer.WriteLine("用户IP:" + Request.UserHostAddress);
writer.WriteLine("错误编码:" + httpError.GetHttpCode());
writer.WriteLine(errorTime);
writer.WriteLine(errorAddress);
writer.WriteLine(errorInfo);
writer.WriteLine(errorSource);
writer.WriteLine(errorType);
writer.WriteLine(errorFunction);
writer.WriteLine(errorTrace);
writer.WriteLine("********************************************************************************************");
}
}
finally
{
if (writer != null)
{
writer.Close();
}
}
/////自定义错误页面
//默认500
if (httpError == null)
{
Server.Transfer("~/Errors/500.html");
//Response.WriteFile("~/Errors/500.html");
Server.ClearError();
}
else
{
var errorCode = httpError.GetHttpCode();
if (errorCode == 404)
{
Server.Transfer("~/Errors/404.html");
Server.ClearError();
}
}
}