我知道,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:
会议未服务器之间共享,这将是一个很大的问题。