使用httpResponse.End摆脱ThreadAbortException

时间:2013-01-24 20:21:10

标签: c# asp.net .net vb.net

是否有人知道如何用不会导致httpResponse.End()导致性能问题的内容替换ThreadAbortException?有人建议做一个'HttpContext.Current.ApplicationInstance.CompleteRequest()',但这并没有做httpResponse.End()所做的一切,比如将缓冲数据发送到客户端这对我来说是个问题。

2 个答案:

答案 0 :(得分:3)

首先,我怀疑这是真的导致重大问题。然而,无论如何,这通常都不是一个好主意......真的是滥用例外。 (无论如何,IMO。)

来自the documentation

  

此方法仅用于与ASP兼容,即与ASP.NET之前的基于COM的Web编程技术兼容。如果您想跳到EndRequest事件并向客户发送回复,请改为呼叫CompleteRequest

显然,在您致电CompleteRequest后,当前方法仍会继续,因此您需要确保干净地完成当前事件的处理。

答案 1 :(得分:1)

好的,我找到了答案here。如果你向下滚动到'Jay Zalos'的回答。我用以下3行代替httpResponse.End()

Response.Flush()
Response.SuppressContent = True
HttpContext.Current.ApplicationInstance.CompleteRequest()