我在Server.Transfer
VS Response.Redirect
上找到了很多主题,但没有一个解释过Server.Transfer和Response之间的区别。重写。
据我所知,他们使用相同类型的方法来导航用户:那么它们之间的区别是什么?它们何时应该被使用?
答案 0 :(得分:0)
Response.Redirect
会将重定向标头从服务器发送到客户端,并会导致对新网址的另一个请求(总计:2个请求)。
但是,Server.Transfer
只会导致1个客户端 - 服务器请求,并且浏览器地址栏中的url不会更改,因为浏览器没有获得任何重定向符号,这一切都发生在服务器端 - 与Response.Redirect
不同。
希望有所帮助。
答案 1 :(得分:0)
使用Server.Transfer传输到另一个页面可节省服务器资源。它不是告诉浏览器重定向,而只是改变Web服务器上的“焦点”并传输请求。这意味着您无法获得尽可能多的HTTP请求,因此可以减轻Web服务器的压力并使您的应用程序运行得更快。
但请注意:因为“转移”过程只能在服务器上运行的那些站点上运行,所以不能使用Server.Transfer将用户发送到外部站点。只有Response.Redirect可以做到这一点。
其次,Server.Transfer在浏览器中维护原始URL。这确实可以帮助简化数据输入技术,尽管在调试时可能会造成混淆。
这不是全部:Server.Transfer方法还有第二个参数 - “preserveForm”。如果将此设置为True,则使用Server.Transfer(“WebForm2.aspx”,True)等语句,现有的查询字符串和任何表单变量仍可用于要传输的页面。
例如,如果您的WebForm1.aspx具有名为TextBox1的TextBox控件,并且您将preserveForm参数设置为True转移到WebForm2.aspx,则您可以通过引用Request来检索原始页面TextBox控件的值.FORM( “TextBox1中”)。
因此,简而言之:Response.Redirect只是告诉浏览器访问另一个页面。 Server.Transfer有助于减少服务器请求,保持URL相同,并且通过一些小错误,允许您传输查询字符串和表单变量。