普通頁面:
protected void Page_Load(object sender, EventArgs e)
{
throw new Exception("hello");
}
ErrorPage:
protected void Page_Error(object sender, EventArgs e)
{
Response.Write(Server.GetLastError().GetBaseException().Message);
Server.ClearError();
}
Web.Config
<customErrors mode="On" defaultRedirect="ErrorPage.aspx"/>
問題:
ErrorPage.aspx的Server.GetLastError()总是为空,如何才能获取出错页面的Exception Message呢?
Global.asax文件中:
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();
string errorurl = Request.Url.ToString();
string errorInfo = "發生異常的頁面:"+errorurl ;
errorInfo += "\r\n異常信息是:" + ex.Message.ToString();
//寫入log文件
ErrorLog log = new ErrorLog();
log.WriteLog(errorInfo);
errorInfo = "發生異常的頁面:" + errorurl;
errorInfo += "<br><br>異常信息是:" + ex.Message.ToString();
Application["weberror"] = errorInfo;
Server.ClearError();
this.Response.Redirect("~/help/Error.aspx");
Error.aspx.cs文件中:
if (!IsPostBack)
{
if (Application["weberror"] != null)
{
locErrorInfo.Text = Application["weberror"].ToString();
Application["weberror"] = null;
}
}
throw new ArgumentOutOfRangeException(...);
试试用 Application_Error() 取代 Page_Error()
参见下面帖子:
http://bytes.com/forum/thread286487.html