我们有一个 URLRewriting 模块,它在 BeginRequest 事件方法中使用 Response.Redirect 来更改目标页面。
- 使用 Server.Transfer 或 Server.TransferRequest 而不是 Response.Redirect 会更好吗?
- 解决方案中还有其他 HTTP 模块,我是否会使用 Server.Transfer 绕过任何其他模块,或者服务器是否会像新请求一样开始,只是将往返行程保存到浏览器?
- 客户端会注意到任何差异吗?服务器会以不同的方式处理请求吗?
以下问题涵盖了重定向和传输之间的区别,但不在 HTTP 模块中;
编辑:模块中也使用了 HttpContext.RewritePath,所以看起来我们有三种技术可以将初始请求从原始路径移动;Redirect、Transfer、RewritePath分别是其中;返回浏览器,返回 HTTP 管道的开始并继续在新路径上处理。