当前位置:编程学习 > C#/ASP.NET >>

Global.asax中Application_Error页面跳转无效

 Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        '在出现未处理的错误时运行的代码
        'If (Server.GetLastError().Message.Contains("HttpUnhandledException")) Then
        '    System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "abc.txt", "上传文件过大!")
        'End If
        
        Dim objErr As Exception = Server.GetLastError().GetBaseException()
        Dim [error] As String = "发生异常页: " & Request.Url.ToString() & ""
        [error] += "<br/>异常信息: " + objErr.Message & ""
        Server.ClearError()
        Application("error") = [error]
        Response.Redirect("errorpage.aspx")

    End Sub

可以扑捉到错误,但是就是最后的Response.Redirect("errorpage.aspx")跳转无效, 出错后在火狐下显示 连接被重置 ,载入页面时到服务器的连接被重置。

是什么原因 ? 
--------------------编程问答-------------------- Response.End() --------------------编程问答-------------------- "载入页面时到服务器的连接被重置"

errorpage.aspx跟global同一目录吗?
直接打开errorpage.aspx是否有错导致循环重定向。
是否重写beginRequest了事件? --------------------编程问答--------------------
1L的可能是准确的0.0 --------------------编程问答-------------------- 谢楼上,加上了还是不行 --------------------编程问答--------------------
引用楼主 lwl0606 的回复:
Server.GetLastError().Message.Contains("HttpUnhandledException")


vb里没有判断类型的语句吗,竟然要这样判断类型... --------------------编程问答-------------------- errorpage.aspx跟global是在同一目录

errorpage目前是一个空页面,没有加载其他代码

Application_Error 加了断点看到只运行了一次,所以没有死循环的可能 --------------------编程问答--------------------
引用 5 楼 karascanvas 的回复:
引用楼主 lwl0606 的回复:
Server.GetLastError().Message.Contains("HttpUnhandledException")


vb里没有判断类型的语句吗,竟然要这样判断类型...


这些都是测试用的, 并且已经注释掉了, 现在的主要问题是不跳转 --------------------编程问答-------------------- Web.config 加入 
<customErrors mode="On" defaultRedirect="GenericErrorPage.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");
}
//ErrorPage.aspx 
protected void Page_Load(object sender, EventArgs e)
{
    ErrorMessageLabel.Text = Application["error"].ToString();
}

FORM认证
--------------------编程问答-------------------- IE 可以跳转,为什么火狐就不能跳转呢, 你们的火狐可以跳转吗?

我用的火狐 5.0 
--------------------编程问答-------------------- 本地测试成功,貌似火狐对Response.Redirect的兼容有问题。
改为 Response.Redirect("~/errorpage.aspx") 本地测试成功,
今天晚上挂网上试试

--------------------编程问答-------------------- 用
Response.Redirect("errorpage.aspx",true);
或者
Server.Transfer("errorpage.aspx");



--------------------编程问答--------------------  可为目标位置指定一个绝对 URL(例如 http://www.contoso.com/default.aspx)或相对 URL(例如 default.aspx),但有些浏览器可能不接受相对 URL。

最好使用firebug来查看http头
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,