ASP.NET默认的异常处理页面太难看了,如果在代码中每一个地方都添加try..catch块显得很繁琐,如果在web.config中配置默认的错误页面又得不到错误的详细信息,能不能有个办法一次性地把默认的异常处理页面统统修改过来啊?呵呵小菜鸟提问:D

解决方案 »

  1.   

    可以设置。
    自定义错误页面就行了,在webconfig中指定出错时,转到该页面就行了。
      

  2.   

    可以阿,把你捕获到的异常抛给你指定的页面就行了,在webconfig设置你要指向的错误画面
      

  3.   

    就是啊,可以在Web.config中定义出错页面,然后在出错页面中捕获错误信息就可以了!
      

  4.   

    看来有点难度,要不就把webconfig里的这个设为ON
                <customErrors mode="On">
                  <error statusCode="403" redirect="NoAccess.htm" />
                </customErrors>
      

  5.   

    protected void Application_Error(Object sender, EventArgs e)
    {
    String message = "\n\nURL:\n " + Request.Url.ToString() 
    + "\n\nMESSAGE:\n " + Server.GetLastError().Message
    + "\n\nSTACK TRACE:\n" + Server.GetLastError().StackTrace;
    String LogName = "Application";
    if (!EventLog.SourceExists(LogName)) 
    {
    EventLog.CreateEventSource(LogName, LogName);
    }
    EventLog Log = new EventLog();
    Log.Source = LogName;
    Log.WriteEntry(message, EventLogEntryType.Error);//写到os日志中
    Utility.Logs.WriteLogFile(message);//写到自定义的日志文件中 }
      

  6.   

    忘了说,上面是在global中定义!
      

  7.   

    能不能在Application_Error中自定义一些页面的显示啊?
      

  8.   

    完全可以的,我就是这么做的。可以捕捉异常的详细情况,并给出不同的提示。
    在web.config里设置的错误页用来捕捉异常似乎比较困难。只能给出千篇一律的错误信息。
      

  9.   

       void Application_Error(object sender, EventArgs e) 
       {
           Exception objErr = Server.GetLastError().GetBaseException(); 
           string error = objErr.Message ; 
           Server.ClearError(); 
           Application["error"] = error; 
           Response.Redirect("~/Error.aspx"); 
        } 
    然后在error.aspx.cs里找到Application["error"]作相应处理。不过我这个也不完美,还是显示的生硬的错误信息,对用户不友好,你可以进一步加工成比较友好的错误信息。