未调用重定向页面的PreRequestHandlerExecute

时间:2014-09-05 11:22:06

标签: asp.net vb.net iis

使用Global.asax的PreRequestHandlerExecute动态处理主题。

使用以下内容时,PreRequestHandlerExecute仅针对上一页执行,而不是现在加载页面:

    Server.Transfer(~/Error.aspx", True)

这导致我的主题没有用于Error.aspx页面,因为此页面没有处理PreRequestHandlerExecute。

任何人都知道为什么?似乎无法找到任何答案。

此处也有问题,但未答复(和4岁):Why is PreRequestHandlerExecute not called after postback redirect?

更新:已经读过Server.Transfer继续当前请求,而像Response.Redirect这样的替代方法会取消当前请求,并生成另一个请求。如果使用相同的请求(因为我们已经处理了此请求的事件),这是有意义的。在那种情况下......有任何可用的工作吗?

1 个答案:

答案 0 :(得分:1)

ansower在MSDN上:

  

Server.Transfer充当了有效的替代品   Response.Redirect方法。 Response.Redirect指定浏览器   请求不同的页面。因为重定向会强制新页面   请求,浏览器向Web服务器发出两个请求,因此Web   服务器处理额外的请求。 IIS 5.0引入了一个新功能,   Server.Transfer,它将执行转移到另一个ASP页面上   服务器。这样可以避免额外的请求,从而提高整体性能   系统性能,以及更好的用户体验。

Server.Transfer不会启动新请求,因此不会执行PreRequestHandlerExecute。如果需要启动新请求,请使用Response.Redirect。或者在另一个事件中设置页面中的主题(例如Page_PreInit)。