C# 服务器传输时未激发应用程序生命周期事件

C# 服务器传输时未激发应用程序生命周期事件,c#,response.redirect,server.transfer,application-lifecycle,C#,Response.redirect,Server.transfer,Application Lifecycle,我有一个自定义重写模块,当传递特定的查询字符串参数时,我需要能够调用server.transfer而不是response.redirect,这是由于adserve软件和跟踪 在重写模块的Init事件中,我注册了以下事件: 开始请求 PreRequestHandlerExecute 释放请求状态 调用Response.Redirect时,实际调用了ReleaseRequestState事件,重写模块完成并设置了新的控件URL 调用Server.Transfer时,不调用ReleaseRequest

我有一个自定义重写模块,当传递特定的查询字符串参数时,我需要能够调用server.transfer而不是response.redirect,这是由于adserve软件和跟踪

在重写模块的Init事件中,我注册了以下事件:

开始请求 PreRequestHandlerExecute 释放请求状态

调用Response.Redirect时,实际调用了ReleaseRequestState事件,重写模块完成并设置了新的控件URL

调用Server.Transfer时,不调用ReleaseRequestState事件,也不设置友好URL

我想我理解Response.Redirect和Server.Transfer之间的区别,但我无法理解为什么不调用该事件-调用的是Session.End还是Session.About事件,并且该事件从未触发?还是这里发生了完全不同的事情

谢谢


保罗

我猜这是两者之间的细微差别

Redirect执行客户端重定向——这意味着客户端浏览器会收到一条消息,告诉它请求一个不同的URL,从而给你一个新的请求


Server.Transfer不会创建新请求()。它只是在当前页面上停止工作,然后在另一个页面上开始工作——没有新的请求。

您好,谢谢您回复我-如果没有新的请求,那么它肯定会继续调用PostReleaseState事件,而不仅仅是终止请求?似乎应该这样做。除非管道内部有某种魔力,可以知道州政府是否被收购。如果没有获取任何状态(比如.css请求),那么框架可能不会调用ReleaseRequestState。只是猜测而已,我不知道这是事实。