哪个更好,Server.Transfer
或者Response.Redirect
?我正在为此寻找一些解释。
2 回答
它们有不同的功能。更好的定义取决于你想要做什么。
Response.Redirect 告诉客户端访问一个新地址,该地址可以在任何地方。
Server.Transfer 将请求(可选地保留查询字符串)转发到同一服务器上的另一个页面。
如果考虑到新页面位于同一服务器上,您的标准是减少不必要的开销,那么 Server.Transfer 就是您想要的方法。
这取决于您的要求。
假设如果您在 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 的一些限制
它只能用于相同的域页面(在同一台服务器上)
它绕过您转移到的页面上的任何身份验证
现在您可以根据您的要求自行决定哪个更好。