Application_Error 我在Global.asax Application_Error 里面写了记录错误的代码(上网找的)。为什么不记录错误?以前还好好的。配置文件需要修改什么东西吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 简单说 Application_Error 方法不执行。错误日志没写入 如果你在程序中用try catch捕获了异常,就不会触发,否则在Application_Error中是可得到错误的。 是的,确实是这样。其实没有必要这样做,尽量用自己的代码在发生异常处try{}catch{}处理,只有在意料之外的情况才用这个。 void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 Exception objErr = Server.GetLastError().GetBaseException(); string error = string.Empty; string errortime = string.Empty; string erroraddr = string.Empty; string errorinfo = string.Empty; string errorsource = string.Empty; string errortrace = string.Empty; error += "发生时间:" + System.DateTime.Now.ToString() + "<br>"; errortime = "发生时间:" + System.DateTime.Now.ToString(); error += "发生异常页: " + Request.Url.ToString() + "<br>"; erroraddr = "发生异常页: " + Request.Url.ToString(); error += "异常信息: " + objErr.Message + "<br>"; errorinfo = "异常信息: " + objErr.Message; errorsource = "错误源:" + objErr.Source; errortrace = "堆栈信息:" + objErr.StackTrace; error += "--------------------------------------<br>"; Server.ClearError(); Application["error"] = error; //独占方式,因为文件只能由一个进程写入. System.IO.StreamWriter writer = null; try { lock (this) { // 写入日志 string year = DateTime.Now.Year.ToString(); string month = DateTime.Now.Month.ToString(); string path = string.Empty; string filename = DateTime.Now.Day.ToString() + ".txt"; path = Server.MapPath("~/Error/") + year + "/" + month; //如果目录不存在则创建 if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } System.IO.FileInfo file = new System.IO.FileInfo(path + "/" + filename); //if (!file.Exists) // file.Create(); //file.Open(System.IO.FileMode.Append); writer = new System.IO.StreamWriter(file.FullName, true);//文件不存在就创建,true表示追加 writer.WriteLine("用户IP:" + Request.UserHostAddress); writer.WriteLine(errortime); writer.WriteLine(erroraddr); writer.WriteLine(errorinfo); writer.WriteLine(errorsource); writer.WriteLine(errortrace); writer.WriteLine("--------------------------------------------------------------------------------------"); //writer.Close(); } } finally { if (writer != null) writer.Close(); } Server.Transfer("~/Error/ErrorPage.aspx"); }出现错误不跳转。日志文件没记录。以前是好的。最近有人不知道怎么弄的。 把你的trycatch都删除了,然后搞一个异常的输入,除0之类的错误,就出现了。哈哈。明白!! 一个再简单不过的数据库问题 用asp.net而不用php的理由 导出Excel 时 名称为什么会是一些字母组合呢? 如CAYLKNGN. 也是刷新问题,setInterval()不工作 等待...... 用户登录的问题 FreeTextBox怎么汉化? 怎样格式化时间? 控件的name和id属性的区别? 高手!求救!如何在Crystal Report中动态修改其图表控件的属性,如将柱型图改为折线图!!!急!在线! 如何做一个浮动窗口 如何让Repeater横着显示数据 急 [有点特殊]gridview导入Excel只能导入整个网页
其实没有必要这样做,尽量用自己的代码在发生异常处try{}catch{}处理,只有在意料之外的情况才用这个。
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码 Exception objErr = Server.GetLastError().GetBaseException();
string error = string.Empty;
string errortime = string.Empty;
string erroraddr = string.Empty;
string errorinfo = string.Empty;
string errorsource = string.Empty;
string errortrace = string.Empty;
error += "发生时间:" + System.DateTime.Now.ToString() + "<br>";
errortime = "发生时间:" + System.DateTime.Now.ToString(); error += "发生异常页: " + Request.Url.ToString() + "<br>";
erroraddr = "发生异常页: " + Request.Url.ToString();
error += "异常信息: " + objErr.Message + "<br>";
errorinfo = "异常信息: " + objErr.Message;
errorsource = "错误源:" + objErr.Source;
errortrace = "堆栈信息:" + objErr.StackTrace;
error += "--------------------------------------<br>";
Server.ClearError();
Application["error"] = error; //独占方式,因为文件只能由一个进程写入.
System.IO.StreamWriter writer = null;
try
{
lock (this)
{
// 写入日志
string year = DateTime.Now.Year.ToString();
string month = DateTime.Now.Month.ToString();
string path = string.Empty;
string filename = DateTime.Now.Day.ToString() + ".txt";
path = Server.MapPath("~/Error/") + year + "/" + month;
//如果目录不存在则创建
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
System.IO.FileInfo file = new System.IO.FileInfo(path + "/" + filename);
//if (!file.Exists)
// file.Create();
//file.Open(System.IO.FileMode.Append);
writer = new System.IO.StreamWriter(file.FullName, true);//文件不存在就创建,true表示追加
writer.WriteLine("用户IP:" + Request.UserHostAddress);
writer.WriteLine(errortime);
writer.WriteLine(erroraddr);
writer.WriteLine(errorinfo);
writer.WriteLine(errorsource);
writer.WriteLine(errortrace);
writer.WriteLine("--------------------------------------------------------------------------------------");
//writer.Close();
}
}
finally
{
if (writer != null)
writer.Close(); } Server.Transfer("~/Error/ErrorPage.aspx");
}
出现错误不跳转。日志文件没记录。以前是好的。最近有人不知道怎么弄的。