【问题标题】:Response.Redirect("XXX", false) and Page Life Cycle?Response.Redirect("XXX", false) 和页面生命周期?
【发布时间】:2013-09-30 21:19:11
【问题描述】:

由于我使用的性能原因,Response.Redirect("XXX", false)。我不希望页面生命周期继续。有什么方法可以同时使用Response.Redirect("XXX", false)(注意false)并停止页面生命周期。查看性能问题,

http://blogs.msdn.com/b/tmarq/archive/2009/06/25/correct-use-of-system-web-httpresponse-redirect.aspx

http://mvolo.com/fix-the-3-high-cpu-performance-problems-for-iis-aspnet-apps/

【问题讨论】:

  • 嗯,最合乎逻辑的方法是使用 Response.Redirect("XXX", true)。你能提供你不能使用它的原因吗?上下文可能有助于找到答案。
  • 为什么要停止当前页面的生命周期? @cahmadzadeh:我认为是因为性能原因不推荐使用true overload
  • @TimSchmelter,是的,这肯定会造成 scabality 问题。 mvolo.com/…

标签: asp.net webforms


【解决方案1】:

您始终可以使用 Response.End(),但最简单的方法是简单地传递 true 参数。

Response.Redirect("XXX", true);

或者

Response.Redirect("XXX", false);
Response.End();

编辑: 在阅读了您帖子中的 cmets 后,似乎 Response.End() 也没有用,因为它还会抛出 ThreadAbortException。

然而,这里似乎给出了最好的答案(使用 HttpContext.Current.ApplicationInstance.CompleteRequest 而不是响应结束,但它不会停止页面生命周期):http://support.microsoft.com/kb/312629/en

Response.Redirect("XXX", false);
HttpContext.Current.ApplicationInstance.CompleteRequest();

如果您不希望出现异常,最好的办法是在您的代码中优雅地退出。

【讨论】:

  • 仅供参考,它不会停止页面生命周期。
猜你喜欢
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
相关资源
最近更新 更多