Server.Transfer
和Response.Redirect
之间的区别是什么?
答案 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 :
如果我们不关心导致额外的往返服务器 每个请求
如果我们不需要保留查询字符串和表单变量 原始请求
如果我们希望我们的用户能够在其中看到新的重定向网址 在浏览器中重定向
Response.Redirect更加用户友好,因为网站访问者可以
为他们重定向到的页面添加书签。
应使用Server.Transfer:
答案 3 :(得分:-2)
Server.Transfer为您提供了将参数值设置为目标页面的选项。