使用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这样的替代方法会取消当前请求,并生成另一个请求。如果使用相同的请求(因为我们已经处理了此请求的事件),这是有意义的。在那种情况下......有任何可用的工作吗?
答案 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)。