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

Asp.net HTTPModule BeginRequest应该是Response.Redirect或Server.Transfer,asp.net,httpmodule,url-rewriting,Asp.net,Httpmodule,Url Rewriting,我们有一个URLRewriting模块,它在BeginRequest事件方法中使用Response.Redirect来更改目标页面 使用Server.Transfer或Server.TransferRequest而不是Response.Redirect是否更好 解决方案中还有其他HTTP模块,我会使用Server.Transfer绕过任何其他模块吗?或者服务器会像新请求一样启动,只是将往返过程保存到浏览器 客户端是否会注意到任何差异,服务器是否会以不同的方式处理请求 以下问题涵盖重定向和传输

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

  • 使用Server.Transfer或Server.TransferRequest而不是Response.Redirect是否更好
  • 解决方案中还有其他HTTP模块,我会使用Server.Transfer绕过任何其他模块吗?或者服务器会像新请求一样启动,只是将往返过程保存到浏览器
  • 客户端是否会注意到任何差异,服务器是否会以不同的方式处理请求
以下问题涵盖重定向和传输之间的区别,但不包括HTTP模块内的区别


编辑:也用于模块中,因此我们似乎有三种技术可以将初始请求从原始路径移动;分别重定向、传输、重写路径;返回浏览器,返回HTTP管道的开始,并在新路径上继续处理。

以下是重定向vs传输vs重写路径的最佳解释

总结,;重定向需要往返到浏览器,传输确保原始请求对象不是新请求,但存在回发问题,重写会丢失原始请求对象,但对性能而言是最好的