【问题标题】:Response.Redirect - Application_EndRequestResponse.Redirect - Application_EndRequest
【发布时间】:2010-07-23 01:53:36
【问题描述】:

我在我的应用的 prod 环境中有一个奇怪的行为。 Prod env 有 3 台服务器,在其中一台服务器中,页面重定向会导致 Application_EndRequest 事件被触发;其他两个按预期工作。我想避免在页面重定向时触发 EndRequest 事件。我正在使用 Response.Redirect(url)。我尝试使用 Response.Redirect(url, false); HttpContext.Current.ApplicationInstance.CompleteRequest();它们都触发了 Endrequest 事件。我不确定它是否仅特定于该服务器。

真正的问题是当应用程序在 Response.Redirect 执行期间重新启动时,关键会话变量会被重置,这会导致应用程序出错。有没有办法找到这个问题的真正原因?过去两天我试图解决这个问题,但没有成功。

我的 Prod 服务器是 64 位的。

任何人都可以在这方面提供帮助吗?非常感谢您的帮助。谢谢。 ~/阿南特

【问题讨论】:

  • 当您说“应用程序重新启动”时,您的意思是 AppDomain 被回收了吗?因为如果是这种情况,我会调查导致这种情况发生的原因。

标签: .net response.redirect


【解决方案1】:

除非我误读了文档(这是可能的),否则我会说它按设计运行。

Redirect 调用 End 在完成时引发 ThreadAbortException 异常。

HttpResponse.End Method
将所有当前缓冲的输出发送到客户端,停止页面的执行,并引发 EndRequest 事件。

HttpApplication.EndRequest Event
当 ASP.NET 响应请求时,作为 HTTP 执行管道链中的最后一个事件发生。

你说“重定向到这里”。 ASP.NET 将适当的标头写入流。请求完成,EndRequest 应该执行。

【讨论】:

  • 感谢您的回复。我能够通过从另一台 prod 服务器镜像完整的设置来解决这个问题。无论如何,谢谢你的回复。 §Ananth
  • @Ananth:如果您找到导致 AppDomain 重置的原因,您应该发布它以防其他人遇到同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
相关资源
最近更新 更多