哪一个更好,Server.Transfer
或Response.Redirect
?我正在寻找一些解释。
答案 0 :(得分:9)
他们有不同的功能。更好的定义取决于你想要做什么。
Response.Redirect告诉客户端访问一个新地址,该地址可以在任何地方。
Server.Transfer将请求(可选地保留查询字符串)转发到同一服务器上的另一个页面。
如果您的标准减少了不必要的开销,因为新页面位于同一台服务器上,Server.Transfer就是您想要的方法。
答案 1 :(得分:-1)
这取决于您的需求。
假设您在page1.aspx上并想要转到page2.aspx
Response.Redirect场景
page1.aspx调用Response.Redirect(“page2.aspx”,false);它将302重定向标头向下发送到客户端浏览器,告诉它所请求的(page1.aspx)已移至page2.aspx,并且Web应用程序终止。然后,客户端浏览器向web服务器发送请求以获取page2.aspx。 IIS告诉asp_wp.exe处理请求。 asp_wp.exe(检查身份验证并执行新请求进入时需要执行的所有其他设置操作)实例化page2.aspx的相应类,处理请求,将结果发送到浏览器,然后关闭。 在这种情况下,服务器会有往返。
Server.Transfer场景
page1.aspx调用Server.Transfer(“page2.aspx”);. ASP.NET为page2.aspx实例化相应的类,处理请求,将结果发送到浏览器,然后关闭。
请注意,Server.Transfer会减少客户端和服务器上的负载。
强>
Server.Transfer也更容易编码,因为你维护你的状态。信息可以通过页面之间的HTTP Context对象传递,无需在查询字符串中传递信息或从数据库重新加载信息。
Server.Transfer的一些限制
它只适用于相同的域页(在同一台服务器上)
它会绕过您转移到的页面上的任何身份验证
现在您可以根据自己的要求自行决定哪一个更好。