none
asp.net 异常捕获后,其他地方无法在捕获?? RRS feed

  • 问题

  • public static string GetContentByUrl(string url) { string strResult = string.Empty; try { byte[] buffer = new WebClient().DownloadData(url); string reaultString = Encoding.UTF8.GetString(buffer); Encoding encode = GetEncoding(reaultString); if (encode == null || encode == Encoding.UTF8) strResult = reaultString; else strResult = encode.GetString(buffer); return strResult; } catch (Exception) { return ""; } }


    void Application_Error(object sender, EventArgs e) 
        {
            lock (lockobj)
            {
                Exception objError = Server.GetLastError();
            
                DateTime errorTime = DateTime.Now;
                StringBuilder errorMessage = new StringBuilder(errorTime.ToString()).AppendLine(" 商友项目 应用程序错误:");
                errorMessage.AppendLine("----------------------------------------------------");
                errorMessage.Append("地址:").AppendLine(Request.Url.ToString());
                errorMessage.Append("错误信息:").AppendLine(objError.Message);
                errorMessage.Append("Stack Trace:").AppendLine(objError.StackTrace.ToString());
                errorMessage.Append("\n\n\n\n");
                
                string path = Server.MapPath("~/Error/errorLog.txt");
                using (FileStream fs = new FileStream(path, FileMode.Append))
                {
                    using (StreamWriter sw = new StreamWriter(fs))
                    {
                        sw.Write(errorMessage);
                    }
                }
            }
        }
    想在application_error获取那个异常要怎么做??
    2012年3月24日 3:30

答案

  • 或許你可以利用Server.Transfer移轉到特定頁面。

    下列程式碼示範擷取到錯誤之後移轉到ExceptionCaptureDemo.aspx。

    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception ex = Server.GetLastError().GetBaseException();
    	Response.Write(ex.Message + "<br/>");
    	Server.Transfer("ExceptionCaptureDemo.aspx");
    }

    接著在ExceptionCaptureDemo.aspx就可以進行Exception的處理。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebApplication2
    {
        public partial class ExceptionCaptureDemo : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Exception ex = Server.GetLastError().GetBaseException();
                Response.Write(ex.Message);
            }
        }
    }
    處理完之後記得呼叫Server.GetLastError()。


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/


    2012年3月24日 16:04