我知道Server.Transfer()应该用于重定向到同一服务器上的另一个“.aspx”页面。但是为什么我不应该使用这种方法重定向到另一个服务器或html页面上的aspx页面的原因是什么? 你的答案非常适合。
答案 0 :(得分:9)
首先,使用Server.Transfer传输到另一个页面可节省服务器资源。它不是告诉浏览器重定向,而只是改变Web服务器上的“焦点”并传输请求。这意味着您无法获得尽可能多的HTTP请求,因此可以减轻Web服务器的压力并使您的应用程序运行得更快。
但请注意:因为“转移”过程只能在服务器上运行的那些站点上运行,所以不能使用Server.Transfer将用户发送到外部站点。只有Response.Redirect可以做到这一点。
其次,Server.Transfer在浏览器中维护原始URL。这确实可以帮助简化数据输入技术,尽管在调试时可能会造成混淆。
来自:Server.Transfer vs. Response.Redirect
因此,简而言之:Response.Redirect只是告诉浏览器访问另一个页面。 Server.Transfer有助于减少服务器请求,保持URL相同,并且通过一些小错误,允许您传输查询字符串和表单变量。
答案 1 :(得分:5)
Server.Transfer()仅适用于一个Web应用程序。
使用Transfer,请求的“处理”在内部(到Web服务器/应用程序)传递到另一个页面,因此Request对象保持不变。这意味着处理需要保留在Web应用程序中。
如果您想让其他网络应用程序继续处理,那么您需要一个新的请求。这意味着您需要让浏览器发出其他请求,因此您需要一个Response.Redirect。
答案 2 :(得分:3)
Server.Transfer只能发生在单个HttpContext上。每个虚拟目录或应用程序都有自己的HttpContext对象,他们不知道它们共存!所以你不能这样做。
答案 3 :(得分:1)
答案 4 :(得分:0)
服务器之间不会共享会话,因此这将是一个大问题。