Server.Transfer和Response.Redirect有什么区别?

时间:2010-03-25 10:18:19

标签: c# .net asp.net

Server.TransferResponse.Redirect之间的区别是什么?

4 个答案:

答案 0 :(得分:12)

Response.Redirect向客户端发送'302 Moved Temporarily'响应,然后客户端浏览器会向该位置发出请求。

Server.Transfer将控件从一个页面传输到服务器端的另一个页面,因此原始的请求和响应缓冲区流在传输完成时保持不变。

这意味着Response.Redirect需要往返客户端,但Server.Transfer不需要。另一个区别是Server.Transfer在浏览器中显示为原始URL ...例如考虑Page1.aspx执行server.transfer到page2.aspx,在这种情况下,Page1.aspx显示在地址栏中,即使它们实际上显示为Page2.aspx。如果改为Page1.aspx做了Response.Redirect,那么将显示Page2.aspx。

因此,根据您想要优化的内容,如果您想要正确支持页面书签和Server.Transfers,如果您希望最大限度地减少客户端到服务器的往返次数,则响应更好。

哦,看看http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=15  它通过警告更好地描述了这一点。

答案 1 :(得分:2)

Server.Transfer()仅适用于您网站上的网页,这意味着服务器开始从头开始渲染新网页。

Response.Redirect()是一种常规重定向,适用于任何网址。

答案 2 :(得分:0)

Response.Redirect should be used :

  • 如果我们想将请求重定向到同一个 服务器或其他一些Web服务器
  • 如果我们不关心导致额外的往返服务器 每个请求

  • 如果我们不需要保留查询字符串和表单变量 原始请求

  • 如果我们希望我们的用户能够在其中看到新的重定向网址 在浏览器中重定向

  • Response.Redirect更加用户友好,因为网站访问者可以 为他们重定向到的页面添加书签。

    应使用Server.Transfer:


  • 如果我们想将当前页面请求转移到另一个.aspx页面上 相同的服务器不在另一台服务器上
    如果您的服务器是示例 www.yahoo.com你不能使用服务器。转移到 www.microsoft.com
  • 如果我们想保留服务器资源并避免不必要的 往返服务器
  • 如果我们想保留查询字符串和表单变量 - 如果我们不需要显示我们重定向请求的真实URL 用户Web浏览器

答案 3 :(得分:-2)

Server.Transfer为您提供了将参数值设置为目标页面的选项。