最近做一个基于ajax的web应用界面,界面上有间隔时间刷新数据,数据时通过ajax请求后台的asp.net 返回的字符串,调试过程发现,vs.net 的调试输出窗口不停的出现ThreadAbortException的异常信息。
功能倒是正常,不影响使用,不过看着有异常的确不爽。查阅资料发现,原来是后台asp.net程序输出内容后习惯的用了Response.End()方法造成的。
微软的一个页面上说 Response.End、Response.Redirect 或 Server.Transfer 这些结束会话或者跳转页面的操作,都会造成 ThreadAbortException异常出现。如果想避免这种异常信息出现,可以使用HttpContext.Current.ApplicationInstance.CompleteRequest 替换Response.End()方法,我尝试使用Response.Flush()方法,也是可以的,目的都是要将Response缓冲的数据发送到客户端浏览器嘛。
至于Response.Redirect方法可以重载 Response.Redirect(String url, bool endResponse),该重载对 endResponse 参数传递 false 以取消对 Response.End 的内部调用。Server.Transfer方法则可以用Server.Execute 方法替代。
处理了这三个方法的调用,基本不会再出现那些碍眼的ThreadAbortException异常信息了。