我处理一个请求begin_request。目前我使用Response.End()来阻止asp.net做其他事情。 Response.End()抛出异常是否有非异常的方式我可以结束请求?
如果你想知道为什么我没有文件它的bc我告诉nginx通过http响应标头提供什么文件,因此我在asp.net中没有别的事情可做。 Response.End抛出一个异常,它必须收集堆栈信息和所有这些。我显然不需要那个,从我过去的问题我知道抛出异常是昂贵的。那我该怎么办?
答案 0 :(得分:16)
HttpResponse.End()
按设计抛出异常;它必须工作。
只有在抛出ThreadAbortException
时,呈现响应的线程才会结束。如果没有异常,则响应不会结束。
另一种方法是改为调用HttpContext.Current.ApplicationInstance.CompleteRequest
。这将通过直接跳转到Application_EndRequest
事件来阻止执行更多代码。
答案 1 :(得分:12)
调用 HttpContext.Current.ApplicationInstance.CompleteRequest() 方法而不是Response.End绕过代码执行到 Application_EndRequest事件