asp.net在使用Response.Redirect try{}catch{}块失效

try 

{ 

…

Response.Redirect("/mymaimai.aspx"); …

} 

catch (Exception e)

{ 

// 异常处理

}

使用以上语句,不管是否有异常,都会执行catch中的,一直显示""失败"",都会抛出 System.Threading.ThreadAbortException,原因如下:

Response.End 方法停止页的执行,并将该执行变换到应用程序的事件管线中的  Application_EndRequest事件。Response.End 后面的代码行将不执行。

此问题出现在 Response.Redirect 和 Server.Transfer 方法中,这是由于这两种方法都在内部 调用 Response.End。

解决方案

若要解决此问题,请使用下列方法之一:

对于 Response.End,调用 ApplicationInstance.CompleteRequest 方法而不调用 Response.End ,以便跳过 Application_EndRequest 事件的代码执行。

对于 Response.Redirect,使用重载 Response.Redirect(String url, bool endResponse),对  endResponse 参数它传递 false以取消对 Response.End 的内部调用。例如:

Response.Redirect ("/mymaimai.aspx", false);如果使用这种解决方法,Response.Redirect 后 面的代码将得到执行。

对于 Server.Transfer,请改用 Server.Execute 方法。

状态

这种现象是设计使然。

解决后的代码:

try 

{ 

Response.Redirect("/mymaimai.aspx",false); 

} 

catch  

{ 

// 异常处理

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索redirect
, 方法
, 代码
, response
, end
, catch
事件失效
,以便于您获取更多的相关知识。

时间: 2024-09-03 23:20:09

asp.net在使用Response.Redirect try{}catch{}块失效的相关文章

asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别_实用技巧

Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一个页面: Response.Redirect("WebForm2.aspx") 或者 Response.Redirect("http://www.cnnas.com/") Server.Transfer 也是通过一条语句将用户引导到另一页面,比如:Server.Transfer("WebForm2.aspx").不过,这

asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别

Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一个页面: Response.Redirect("WebForm2.aspx") 或者 Response.Redirect("http://www.cnnas.com/") Server.Transfer 也是通过一条语句将用户引导到另一页面,比如:Server.Transfer("WebForm2.aspx").不过,这

一起谈.NET技术,asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别

Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一个页面: Response.Redirect("WebForm2.aspx") 或者 Response.Redirect("http://www.cnnas.com/") Server.Transfer 也是通过一条语句将用户引导到另一页面,比如:Server.Transfer("WebForm2.aspx").不过,这

asp.net Response.Redirect跳出框架与打开窗口方法

asp教程.net Response.Redirect跳出框架与打开窗口方法 跳出框架大概会用到js top.location来实现. Response.Write('<script>top.location='http://www.111cn.net';</script>'); Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='url';</s

asp.net中Response.Redirect与Server.Transfer的区别分析

Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面.调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流. 如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换. Response.Redirect则是客户端第一次请求服务器返回状态代码302及

ASP.NET Response.Redirect的原理及实现

之前一直以为Response.Redirect ("default1.aspx")的运行原理是这样的

ASP.NET中Response.Redirect()方法深度剖析

首先在Visual Studio中新建一个网站,在Default页面的Page_Load事件中写下 Response.Redirect("http://www.baidu.com"); 然后添加一个 Page_LoadComplete事件处理方法. 最终效果如下: 在12和17行设置了断点,方便对整个过程进行观察. 打开Fiddler,用以观察整个过程中的HTTP数据. 点击"调试"按钮 程序开始执行. 这时Fiddler中出现了一条数据:

关于asp.net的response.redirect无法跳转到下一个网页

问题描述 protectedvoidbtnOK_Click(objectsender,EventArgse){stringname=this.txtName.Text;stringsex="先生";if(rbtnSex2.Checked)sex="女士";Response.Redirect("~/welcome.aspx?Name="+name+"&Sex="+sex);}} 解决方案 解决方案二:路径是否正确,单步调

asp.net中Response.Redirect与Server.Transfer的区别分析_实用技巧

Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面.调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流. 如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换. Response.Redirect则是客户端第一次请求服务器返回状态代码302及