3

我们有一个 URLRewriting 模块,它在 BeginRequest 事件方法中使用 Response.Redirect 来更改目标页面。

  • 使用 Server.Transfer 或 Server.TransferRequest 而不是 Response.Redirect 会更好吗?
  • 解决方案中还有其他 HTTP 模块,我是否会使用 Server.Transfer 绕过任何其他模块,或者服务器是否会像新请求一样开始,只是将往返行程保存到浏览器?
  • 客户端会注意到任何差异吗?服务器会以不同的方式处理请求吗?

以下问题涵盖了重定向和传输之间的区别,但不在 HTTP 模块中;

编辑:模块中也使用了 HttpContext.RewritePath,所以看起来我们有三种技术可以将初始请求从原始路径移动;Redirect、Transfer、RewritePath分别是其中;返回浏览器,返回 HTTP 管道的开始并继续在新路径上处理。

4

1 回答 1

7

这是 Redirect vs Transfer vs RewritePath 的最佳解释;http://www.developerfusion.com/article/4643/implementing-http-handlers-in-aspnet/4/

总结;Redirect 需要往返浏览器,Transfer 确保原始 Request 对象不是新请求,但有 Post-backs 问题,Rewrite 会丢失原始 Request 对象,但性能最佳。

于 2010-01-05T16:10:19.313 回答