我正在运行.NET 3.5和IIS7。
我试图使用customErrors重定向到自定义错误页面,该页面仍然可以显示异常详细信息,堆栈跟踪等。我很难让它工作,尝试了我在网上发现的大约20种不同的方法(主要是在stackoverflow),其中一些是其他人的轻微变化。我更喜欢在Web.config中进行重定向,因为我希望在代码之外轻松找到/编辑自定义错误页面。
这是我最终的工作。我发帖是因为我尝试了很多我在这里找到的更复杂的方法而且它们对我不起作用,只是想发布最终做的简单方法。
的Web.config:
<customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx" redirectMode="ResponseRewrite" />
如果没有redirectMode="ResponseRewrite"
,我无法从自定义错误页面访问异常详细信息。
Error.aspx
protected void Page_Load(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex != null)
{
if (ex.GetBaseException() != null) ex = ex.GetBaseException();
litErrorMessage.Text = String.Format("<div class=\"error\">{0}</div>", ex.Message);
litErrorStackTrace.Text = String.Format("<b>Source:</b>\n{0}\n<b>Stack Trace:</b>\n{1}\n", ex.Source, ex.StackTrace);
}
else
{
litErrorStackTrace.Text = "No Exception information available.";
}
}
我也试过用
HttpException ex = (HttpException)HttpContext.Current.Server.GetLastError();
,如某些示例所示,但不起作用。
我还在 Global.asax - &gt;中尝试了各种代码。 Application_Error ,但事实证明没有必要。在那里尝试了各种代码后,包括存储会话变量,Application_Error现在都是空的。