2012-01-15 52 views
4

我在Server.Transfer VS Response.Redirect上发现了很多话题,但都没有解释Server.Transfer和Response之间的区别。 重写何时使用Server.Transfer或Response.Rewrite?

据我所知,他们使用相同类型的方法来浏览用户:那么他们之间的区别和他们什么时候应该使用?

+0

可能重复[哪一个更好Server.Transfer和Response.Redirect](http://stackoverflow.com/questions/5151439/which-one-is-better-server-transfer-and-response-redirect) – slugster 2012-01-15 06:27:31

+0

关键的区别在于Response.Redirect一次返回到Web浏览器以告诉它重定向到一个新的URL,而Server.Transfer只是开始在服务器上处理一个新的页面而不进行往返。 – 2012-01-15 06:31:07

+1

它只是感觉不对,关闭-1票和没有接受的问题的答案。也许我们可以在这里得到一个很好的答案,因为这是一个更好的问题,并且为此关闭另一个答案? (或者一个*体面*重复可以被链接...) – 2012-01-15 07:03:21

回答

0

Response.Redirect会将重定向头从服务器发送到客户端,并且会导致对新的url的另一个请求(总数:2个请求)。

但是,Server.Transfer只会导致1个客户端 - 服务器请求,并且浏览器地址栏中的网址不会更改,因为浏览器没有得到任何重定向的标志,它都发生在服务器端 - 不像Response.Redirect

希望有所帮助。

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,则可以通过引用检索原始页面TextBox控件的值的Request.Form( “TextBox1中”)。

因此,简单地说:Response.Redirect只是告诉浏览器访问另一个页面。 Server.Transfer有助于减少服务器请求,使URL保持不变,并且通过一些小小的错误处理,可以传输查询字符串和表单变量。

相关问题