HTTPModule BeginRequest应该是Response.Redirect或Server.Transfer

时间:2009-11-18 16:40:33

标签: asp.net httpmodule url-rewriting

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

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

以下问题涵盖重定向和传输之间的差异,但不包括HTTP模块中的差异;

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

1 个答案:

答案 0 :(得分:6)

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

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