慢慢来

Emmet.C's Technology Blog

导航

【求助】关于asp.net中的'Thread was being aborted'异常

Posted on 2006-02-15 10:18  Emmet.C  阅读(6326)  评论(5编辑  收藏  举报
大家知道在asp.net下Server.Transfer和Response.Redirec做着相似的事情却存在很大的区别。
其中一个区别在于response.redirect会重新发起一次请求,因此,会将当前请求的进程abort掉。所以,每次使用response.redirect方法都会抛出一个'Thread was being aborted'的异常。我查阅的相关的资料认为解决这个问题的最好办法是不要把response.redirect写在try/catch以内,那就不会出现这个异常了。
现在情况是,我需要在程序中通过点击触发response.redirect方法来转到特定的页面(类似于abc.aspx?par1=1&par2=demopar),但是每次都会出现'Thread was being aborted'异常,我在页面捕获异常并转到错误处理页面。奇怪的是,这个异常是间隔出现的,也就是说,我点第一次,转到错误处理页面,我点第二次,正常处理,第三次,错误处理页面,第四次,正常处理。根据跟踪数据表明,每次都抛出了这个异常。所以我很 奇怪为什么会出现这种间隔处理的情况。
为了解决这个问题,我依照网上的建议,将redirect方法放置在try/catch之外,结果的确没有异常了,服务器返回给我一个完全空白的页面。感觉就像当前请求还是被abort掉了,但是由于我并没有捕获这个异常,所以页面也没有任何输出。

很多人也许奇怪我为什么不用transfer,最大的一个原因在于使用transfer页面标题不会改变,而且现有机制如果改用transfer会变动较大。

那位大大知道怎么办?谢谢。