2

哪个更好,Server.Transfer或者Response.Redirect?我正在为此寻找一些解释。

4

2 回答 2

9

它们有不同的功能。更好的定义取决于你想要做什么。

Response.Redirect 告诉客户端访问一个新地址,该地址可以在任何地方。

Server.Transfer 将请求(可选地保留查询字符串)转发到同一服务器上的另一个页面。

如果考虑到新页面位于同一服务器上,您的标准是减少不必要的开销,那么 Server.Transfer 就是您想要的方法。

于 2011-03-01T07:18:23.513 回答
-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 的一些限制
它只能用于相同的域页面(在同一台服务器上)
它绕过您转移到的页面上的任何身份验证


现在您可以根据您的要求自行决定哪个更好。

于 2011-03-01T07:05:19.310 回答