为什么使用 Fiddler 有时会在页面转换时破坏我的网站。
在服务器端重定向之后——在 http 响应中(在 Fiddler 中找到)我得到这个:
对象移动
对象转移到了这里。
该站点是一个 ASP.NET 1.1 / VB.NET 1.1 [原文如此] 站点。
为什么 Fiddler 不直接找我?我不明白。
我在开发时对这个问题很好,但我担心其他代理服务器可能会导致“真正的客户”出现这个问题。我什至不清楚到底发生了什么。
为什么使用 Fiddler 有时会在页面转换时破坏我的网站。
在服务器端重定向之后——在 http 响应中(在 Fiddler 中找到)我得到这个:
对象移动
该站点是一个 ASP.NET 1.1 / VB.NET 1.1 [原文如此] 站点。
为什么 Fiddler 不直接找我?我不明白。
我在开发时对这个问题很好,但我担心其他代理服务器可能会导致“真正的客户”出现这个问题。我什至不清楚到底发生了什么。
这实际上就是 Response.Redirect 所做的。它向用户代理发送 302 - 对象移动响应。然后,用户代理会自动转到 302 响应中指定的 URL。如果您需要真正的服务器端重定向而不需要往返客户端,请尝试使用 Server.Transfer。
如果您只是使用请求构建器构建请求,您将不会看到 Fiddler 自动遵循返回的重定向。
相反,如果您使用的是 IE 或其他浏览器,它通常会检查重定向标头并跟随它。
特别是对于 IE,我相信存在时间极端情况,即浏览器在不明确的情况下无法遵循重定向。您通常可以通过单击工具/提琴手选项并启用“服务器”和“客户端”套接字重用设置来解决此问题。
感谢 user15310,它适用于 Server.Transfer
Server.Transfer("newpage.aspx", true);
首先,使用 Server.Transfer 转移到另一个页面可以节省服务器资源。它不是告诉浏览器重定向,而是简单地改变 Web 服务器上的“焦点”并传输请求。这意味着您不会收到那么多的 HTTP 请求,从而减轻了您的 Web 服务器的压力并使您的应用程序运行得更快。
但要注意:因为“转移”过程只能在服务器上运行的那些站点上工作,所以不能使用 Server.Transfer 将用户发送到外部站点。只有 Response.Redirect 可以做到这一点。
其次,Server.Transfer 维护浏览器中的原始 URL。这确实有助于简化数据输入技术,尽管在调试时可能会造成混乱。
这还不是全部:Server.Transfer 方法还有第二个参数——“preserveForm”。如果将此设置为 True,使用诸如 Server.Transfer("WebForm2.aspx", True) 之类的语句,现有的查询字符串和任何表单变量仍可用于您要转移到的页面。
在这里阅读更多:http: //www.developer.com/net/asp/article.php/3299641/ServerTransfer-Vs-ResponseRedirect.htm