0

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

在 RewriteModule 的初始化事件中,我注册了事件:

BeginRequest PreRequestHandlerExecute ReleaseRequestState

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

当调用 Server.Transfer 时,不会调用 ReleaseRequestState 事件并且未设置友好 URL

我想我理解 Response.Redirect 和 Server.Transfer 之间的区别,但我无法弄清楚为什么实际上没有调用该事件 - 是 Session.End 还是 Session.Abandon 事件被调用并且这个事件永远不会被触发?还是这里发生了完全不同的事情

谢谢

保罗

4

1 回答 1

0

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

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

Server.Transfer 不会创建新请求 ( http://msdn.microsoft.com/en-us/library/y4k58xk7.aspx )。它只是停止在当前页面上工作并开始在另一个页面上工作——没有新请求。

于 2010-07-26T12:46:33.700 回答