为什么我们不能用Server.Transfer的()到另一台服务器上的重定向(Why we cant

2019-08-03 17:00发布

我知道,Server.Transfer的()应使用重定向到另一个“的.aspx”页面在同一台服务器上。 但背后是什么我为什么不应该使用这种方法来重定向到ASPX页面另一台服务器或HTML页面上的原因是什么? 你的答案是真的appriciated。

Answer 1:

Server.Transfer的只能发生单HttpContext的。 每个虚拟目录或应用程序都有自己的HttpContext对象,他们不知道,他们共同存在! 所以你不能做到这一点。



Answer 2:

首先,转移到使用Server.Transfer的另一页节省服务器资源。 不是告诉浏览器重定向的,它只是改变了Web服务器上的“焦点”,并请求传送。 这意味着你没有得到相当尽可能多的HTTP请求来通过,这因而简化您的Web服务器上的压力,让您的应用程序运行得更快。

但是要注意:因为“转移”过程中可以工作只有那些运行在服务器上的网站,你不能用Server.Transfer的用户发送到外部网站。 只有Response.Redirect的能做到这一点。

其次,Server.Transfer的保持在浏览器中的原始URL。 这真的可以帮助简化数据输入技术,虽然在调试时可能使混乱。

来源: Server.Transfer的Response.Redirect的主场迎战

因此,在短暂的:Response.Redirect的只是告诉浏览器访问另一个页面。 Server.Transfer的帮助减少服务器请求,保持URL相同,并与一个小错误的抨击,让你传输的查询字符串和表单变量。

  • Response.Redirect的是更加人性化,为网站访问者可以书签,他们将被重定向到该页面。
  • 转移页面显示到客户端不同的URL比他们真的是。 这意味着,之类的东西相对链接/图像路径可能不会,如果你从一个不同的目录转移到一个页面工作。
  • Server.Transfer的有一个可选的参数,表单数据传递到新的页面。
  • 由于发行版本,这不再起作用,因为ViewState中现在有缺省情况下(EnableViewStateMac默认为true)更安全,所以新的页面无法访问表单数据。 您仍然可以访问原来页面的值,在新页面中,通过请求原处理程序:


Answer 3:

该Server.Transfer的()只有一个web应用中的工作原理。

随着转让,请求“处理”内部是(到Web服务器/应用程序)传递到另一个页面,Request对象保持不变。 这意味着处理需要留在web应用中。

如果你想要让处理继续在另一个web应用,你需要一个新的请求时出现。 这意味着你将需要有浏览器的问题的其他请求,所以你需要一个Response.Redirect的。



Answer 4:

看看Server.Transfer的比。 的Response.Redirect



Answer 5:

会议未服务器之间共享,这将是一个很大的问题。



文章来源: Why we cant use Server.Transfer() to redirect on another server