【问题标题】:HTTPModule BeginRequest should us Response.Redirect or Server.TransferHTTPModule BeginRequest 应该使用 Response.Redirect 还是 Server.Transfer
【发布时间】:2010-12-17 23:00:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net httpmodule url-rewriting


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-23
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多