Response.End()和CompleteRequest()

Rae*_*leh 15 c# response request

什么是优势和劣势的每一个Response.End()CompleteRequest()?我应该在哪里和不应该使用它们?我找了这个问题,但我没有得到正确答案.

Dai*_*Dai 31

HttpResponse.End将输出缓冲区刷新到客户端并终止当前请求处理线程(这很糟糕),同时HttpApplication.CompleteRequest告诉ASP.NET立即跳过ASP.NET管道中的所有未来阶段并直接跳转到EndRequest步骤(这也会引发HttpApplication.EndRequest事件).请求线程然后进行正常的寿命终止清理.

所以,Response.End就像一个弹射座椅:它很快就会结束,但意味着你失去控制,可能会不必要地苛刻.而CompleteRequest就像在最近的机场紧急着陆一样.

  • 理想情况下,您永远不需要使用它们. (5认同)
  • 阅读[正确使用System.Web.HttpResponse.Redirect](http://blogs.msdn.com/b/tmarq/archive/2009/06/25/correct-use-of-system-web-httpresponse-redirect. aspx) - `Response.End`是一个冒险的"弹射座椅"......用尽****谨慎...... (5认同)
  • @Dai 如果不推荐使用 HttpApplication.CompleteRequest ,那么如何进行正确的重定向?不是 Response.Redirect(url, false); 其次是 Context.ApplicationInstance.CompleteRequest(); 合适的方式 ? (2认同)