2010-07-23 96 views
1

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

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

我的产品是64位。

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

+0

当你说“应用程序重启”时,你的意思是AppDomain是否被回收?因为如果是这样的话,我会研究是什么导致了这种情况发生。 – R0MANARMY 2010-07-23 02:08:54

回答

1

除非我误解了文档(这是可能的),我会说它的功能是按照设计的。

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

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

HttpApplication.EndRequest Event
在ASP.NET响应一个请求时作为HTTP执行管线链的最后一个事件。

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

+0

感谢您的回复。通过镜像来自另一个prod服务器的完整设置,我能够解决该问题。无论如何,感谢您的回复。 §Ananth – Ananth 2010-07-24 18:14:48

+1

@Ananth:如果您追查是什么导致AppDomain重置,您应该发布它以防其他人遇到同样的问题。 – R0MANARMY 2010-07-24 21:32:55