Response.redirect引发"线程被中止"

And*_*rdi 43 vb.net iis

当我需要从DB中删除对象时,我调用了一个VB.NET代码.在Page_load上,我检查它是否没有回发(以防止手动刷新),并且在删除对象后,我使用Response.redirect重定向到调用者页面.此时我的代码提出了一个问题

异常:EXCEPTION OCCURS在File_delete.aspx.vb中行号:34错误消息:正在中止线程.

并且,在事件查看器上,我可以看到aspnet_wp.exe崩溃:

aspnet_wp.exe(PID:1532)意外停止.

有关详细信息,请参阅http://go.microsoft.com/fwlink/events.asp上的"帮助和支持中心" .

目前尚不清楚为什么这只发生在这里,因为我也使用response.redirect来查看文件,而不仅仅是删除它.

Dav*_*vid 117

默认情况下,Response.Redirect()中止当前线程.当然,这会抛出一个ThreadAbortException.可以通过传递falseto 来防止它Response.Redirect(),它不会中止当前线程.

但是要注意这意味着什么.如果线程未中止,则后续代码Response.Redirect()将继续执行.相应地控制您的逻辑流程.(这通常在return重定向后使用语句和其他流控制指令完成.)


Mat*_*zer 16

如果你没有给"endResponse"输入参数HttpRequest.Redirect(string,bool)一个"false"布尔值,Response.Redirect将总是抛出一个ThreadAbortException,根据MSDN文档:

只需将"false"赋予"endResponse"参数即可.

  • 在调用Response.Redirect(url,false)之后调用HttpContext.Current.ApplicationInstance.CompleteRequest(); 终止,没有例外. (10认同)

Chr*_*son 5

此处列出的解决此问题的选项列表对我有用(我使用了 #2):https : //gist.github.com/cemerson/9dea993044a4e7fdca0e