【问题标题】:asp.net: response.redirect - dealing with threadabortedexceptionasp.net: response.redirect - 处理 threadabortexception
【发布时间】:2011-08-19 12:28:47
【问题描述】:

当使用 response.redirect(url) 时,它会引发 threadabortedexception。使用重载并将 endResponse 设置为 false 不会抛出异常,而是会让执行完成。

是捕获并忽略 threadabortedexception 还是使用重载并将 endResponse 设置为 false 更好?

重定向调用后无需执行其他代码,所有资源都已清理完毕。 global.asax 中有错误日志记录和默认操作,因此不可能让异常冒泡。

【问题讨论】:

  • 您是否尝试过设置了 bool 标志的重定向,紧接着是 response.end 之类的东西?
  • response.end 是引发异常的原因

标签: asp.net


【解决方案1】:

ThreadAbortException可以被抓到但不能被处理。

当调用 Abort 时 销毁线程的方法,常见的 语言运行时抛出一个 线程中止异常。 ThreadAbortException 是一个特殊的 可以捕获的异常,但它 将在 catch 块的结尾。

这就是 ASP.NET 的工作原理。重定向按设计会引发线程中止异常,忽略它

【讨论】:

  • 奇怪,它实际上并没有这样做
【解决方案2】:

我也经历过。在这种情况下,您可以只使用重载。

【讨论】:

  • 使用重载有什么影响?这个应用程序的重点是对传入的 url 参数做一些逻辑,然后重定向。它必须尽可能快。
  • 没有隐含的含义,尤其是因为不需要像您所说的那样执行其他代码。
  • 根据@Aliostad 发布的内容,我认为这比捕获异常更安全。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多