3

我知道 Server.Transfer() 应该用于重定向到同一服务器上的另一个“.aspx”页面。但是为什么我不应该使用这种方法重定向到另一台服务器上的 aspx 页面或 html 页面的原因是什么?你的答案真的很受欢迎。

4

5 回答 5

9

首先,使用 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),因此新页面无法访问表单数据。您仍然可以通过请求原始处理程序来访问新页面中原始页面的值:
于 2009-09-04T07:49:05.627 回答
5

Server.Transfer() 仅适用于一个 Web 应用程序。

With Transfer, the "handling" of the request is internally (to the webserver/application) passed on to another page, so the Request object stays the same. This means that the processing needs to stay within the webapplication.

If you want to let processing continue on another webapplication, you will need a fresh Request there. This means that you will need have the browser issue an other request, so you need a Response.Redirect.

于 2009-09-04T08:07:34.950 回答
3

Server.Transfer can only happen for single HttpContext. Each virtual directory or app has its own HttpContext object and they know not that they co-exists! so you cannot do that.

于 2009-12-04T08:12:41.367 回答
1

看看Server.Transfer Vs。响应.重定向

于 2009-09-04T07:54:42.947 回答
0

会话不在服务器之间共享,所以这将是一个大问题。

于 2009-09-04T07:49:38.637 回答