Response.End()的替代方案?

时间:2011-10-23 15:54:42

标签: asp.net

我处理一个请求begin_request。目前我使用Response.End()来阻止asp.net做其他事情。 Response.End()抛出异常是否有非异常的方式我可以结束请求?

如果你想知道为什么我没有文件它的bc我告诉nginx通过http响应标头提供什么文件,因此我在asp.net中没有别的事情可做。 Response.End抛出一个异常,它必须收集堆栈信息和所有这些。我显然不需要那个,从我过去的问题我知道抛出异常是昂贵的。那我该怎么办?

2 个答案:

答案 0 :(得分:16)

HttpResponse.End()按设计抛出异常;它必须工作。

只有在抛出ThreadAbortException时,呈现响应的线程才会结束。如果没有异常,则响应不会结束。

另一种方法是改为调用HttpContext.Current.ApplicationInstance.CompleteRequest。这将通过直接跳转到Application_EndRequest事件来阻止执行更多代码。

答案 1 :(得分:12)

  

调用 HttpContext.Current.ApplicationInstance.CompleteRequest()   方法而不是Response.End绕过代码执行到   Application_EndRequest事件

http://support.microsoft.com/kb/312629