网站正式上线后不免会出现很多BUG引起的500,请问有办法把这些500页面的信息记录下来吗?比如500页面url,引发原因等。我记得Java默认是记录的,Asp.net有这样的功能吗?

解决方案 »

  1.   

    可以自定义出错页面。另外IIS本身也可以打开日志功能,会把相应的错误记录在日志里。
      

  2.   


    我不需要转跳错误页面,只需要记录错误页面url和错误发生原因以便日后的维护更新。
    请问楼上的如何打开iis的错误记录呢?
    iis默认的log只是记录访问信息的。
      

  3.   

    customErrors   mode= "On "   defaultRedirect= "./errorpages/GeneralError.htm ">   
    <error   statusCode= "404 "   redirect= "/errorpages/FileNotFound.htm "   />     
    <error   statusCode= "403 "   redirect= "/errorpages/GeneralError.htm "   />     
    <error   statusCode= "500 "   redirect= "/errorpages/GeneralError.htm "   />     
    </customErrors> void Application_Error(object sender, EventArgs e)  
    {
     Exception objErr = Server.GetLastError().GetBaseException();
     string error = "发生异常页: " + Request.Url.ToString() + "<br>";
     error += "异常信息: " + objErr.Message + "<br>";
     Server.ClearError();
     Application["error"] = error;
     Response.Redirect("ErrorPage.aspx");
    }
      

  4.   


    void Application_Error(object sender, EventArgs e)  
    {
     Exception objErr = Server.GetLastError().GetBaseException();
     string error = "发生异常页: " + Request.Url.ToString() + "<br>";
     error += "异常信息: " + objErr.Message + "<br>";
     Server.ClearError();
      Application["error"] = error;
     Response.Redirect("ErrorPage.aspx");
    }
    学习了!
      

  5.   

    一下我的做的一个项目的记录日志类:    /// <summary>
        /// 系统日志管理类
        /// </summary>
        public class SystemLog
        {
            /// <summary>
            /// 默认文件路径及名称
            /// </summary>
            private static string logFilePath =
                "Log.txt";
            /// <summary>
            /// 默认文件大小
            /// </summary>
            private static long logFileMaxSize = 500000;        /// <summary>
            ///  日志文件的最大值 默认最大值是500KB
            /// </summary>
            public static long LogFileMaxSize
            {
                get { return SystemLog.logFileMaxSize; }
                set { SystemLog.logFileMaxSize = value; }
            }
            /// <summary>
            /// 文件的路径 默认文件名配置在web.config文件的ConnectionString节点下
            /// 节点名字是"Log"
            /// 如果需要手动书写日志的文件 可以通过设置这个属性来写入
            /// </summary>
            public static string LogFilePath
            {
                get { return SystemLog.logFilePath; }
                set { logFilePath = value; }
            }
            /// <summary>
            /// 清理日志文件
            /// </summary>
            /// <param name="fileName">日志文件的名称</param>
            private static void ClearText(string fileName)
            {
                File.WriteAllText(fileName, "");        }
            /// <summary>
            /// 检查日志文件 如果日志文件太大,系统自动清理日志文件
            /// 如果日志文件不存在系统自己创建日志文件
            /// </summary>
            /// <param name="fileName">日志文件名称</param>
            /// <returns>返回操作日志文件的对象</returns>
            private static StreamWriter CheckText(string fileName)
            {
                //定义写入文件流对象
                StreamWriter tw = null;
                //判断文件是否存在
                if (File.Exists(fileName))
                {
                    //文件如果存在 使用File类的Open方法打开文件
                    FileStream fs = File.Open(fileName, FileMode.OpenOrCreate);
                    //判断文件的大小 如果文件大于设置好的大小
                    if (fs.Length > logFileMaxSize)
                    {
                        //关闭文件
                        fs.Close();
                        //使用自定方法 ClearText()清理文件内容
                        ClearText(fileName);
                    }
                    //关闭文件
                    fs.Close();            }
                //以追加的方式打开文件 返回文件操作对象 tw
                tw = File.AppendText(fileName);            return tw;
            }
            /// <summary>
            /// 写入日志文件 当系统发生错误的时候系统自动写入记事本日志文件,易
            /// 方便系统管理者维护自己的系统。
            /// </summary>
            /// <param name="appData">系统日志文件配置的路径和文件名</param>
            public static void WriteLogFile(string appData)
            {
                //定义字符串变量 获得文件的路径和名称
                //使用httpcontent对象和server对象完成路径的转换
                string fileName =
                    System.Web.HttpContext.Current.Server.MapPath(logFilePath);
                //使用内置方法CheckText()检测文件
                StreamWriter tw = CheckText(fileName);
                //写入一行行数据
                tw.WriteLine();
                //写入时间
                tw.Write(DateTime.Now);
                //写入提示
                tw.Write("  系统异常内容:  ");
                //写入错误信息
                tw.Write(appData);
                //写入特殊标志 \\n方便文本控件换行输出 <br>方便网页直接输出
                tw.Write("\\n");
                tw.Write("<br>");
                //关闭文件对象
                tw.Close();
            }        /// <summary>
            /// 读取记事本系统日志文件
            /// </summary>
            /// <returns>返回日志内容</returns>
            public static StringBuilder ReadLogFile()
            {
                //定义字符串变量 获得文件的路径和名称
                //使用httpcontent对象和server对象完成路径的转换
                string fileName =
                  System.Web.HttpContext.Current.Server.MapPath(logFilePath);
                //打开文件已便读取文件
                StreamReader sr = new StreamReader(fileName);
                //定义接受变成字符串内容
                StringBuilder sb = new StringBuilder();
                //追加读取
                sb.Append(sr.ReadToEnd());
                //关闭文件
                sr.Close();
                return sb;
            }
        }