服务器之间的区别是什么。转移和响应。重定向?

它们各自的优点和缺点是什么? 什么时候一种比另一种更合适? 什么时候不合适?


当前回答

Response.Redirect()会将您发送到一个新页面,更新地址栏并将其添加到浏览器历史记录中。在浏览器上,您可以单击返回。

Server.Transfer()不会更改地址栏。你不能反击。

当我不想让用户看到我要去哪里时,我使用Server.Transfer()。有时在“加载”类型的页面上。

否则,我将总是使用Response.Redirect()。

其他回答

服务器。传输不会改变客户端浏览器中的URL,因此实际上浏览器并不知道您更改了另一个服务器端处理程序。响应。重定向告诉浏览器移动到另一个页面,因此标题栏中的url会发生变化。

服务器。传输稍微快一点,因为它避免了到服务器的一次往返,但不更改url可能对您有好处,也可能有坏处,这取决于您想要做什么。

Response.Redirect()会将您发送到一个新页面,更新地址栏并将其添加到浏览器历史记录中。在浏览器上,您可以单击返回。

Server.Transfer()不会更改地址栏。你不能反击。

当我不想让用户看到我要去哪里时,我使用Server.Transfer()。有时在“加载”类型的页面上。

否则,我将总是使用Response.Redirect()。

响应。重定向只是向浏览器发送一条消息(HTTP 302)。

服务器。传输在浏览器一无所知的情况下发生,浏览器请求一个页面,但服务器返回另一个页面的内容。

响应。重定向的代价更大,因为它向服务器添加了额外的行程,以确定要去哪里。

服务器。传输是更有效的,但它可能会误导用户,因为Url没有物理改变。

根据我的经验,性能上的差异还没有大到可以使用后一种方法

Response.Redirect()应该在以下情况下使用:

我们希望将请求重定向到我们服务器上的一些普通HTML页面或其他web服务器 我们不关心在每个请求上引起到服务器的额外往返 我们不需要保留原始请求中的查询字符串和表单变量 我们希望我们的用户能够看到新的重定向URL,他在他的浏览器重定向(并能够收藏它,如果它的必要)

Server.Transfer()应该在以下情况下使用:

我们希望将当前页面请求传输到同一服务器上的另一个.aspx页面 我们希望保留服务器资源并避免到服务器的不必要的往返 我们想保留查询字符串和表单变量(可选) 我们不需要在用户的Web浏览器中显示我们重定向请求的真实URL