有没有办法替换httpResponse.End()
,避免抛出ThreadAbortException
造成性能问题?有人建议使用'HttpContext.Current.ApplicationInstance.CompleteRequest()',但这不像httpResponse.End()
那样做所有的事情,例如将缓冲数据发送到客户端,这对于我来说是个问题。
有没有办法替换httpResponse.End()
,避免抛出ThreadAbortException
造成性能问题?有人建议使用'HttpContext.Current.ApplicationInstance.CompleteRequest()',但这不像httpResponse.End()
那样做所有的事情,例如将缓冲数据发送到客户端,这对于我来说是个问题。
显然,在调用该方法仅用于与ASP兼容 - 也就是说,与ASP.NET之前的基于COM的Web编程技术兼容。如果您想跳到EndRequest事件并向客户端发送响应,请改为调用
CompleteRequest
。
CompleteRequest
后,当前方法仍将继续运行,因此您需要确保干净地完成当前事件的处理。好的,我找到了答案在这里。如果你向下滚动,找到 'Jay Zalos' 的回答。我用以下三行代码替换了 httpResponse.End()
:
Response.Flush()
Response.SuppressContent = True
HttpContext.Current.ApplicationInstance.CompleteRequest()