【问题标题】:redirect to a page if response.redirect fails如果 response.redirect 失败,则重定向到页面
【发布时间】:2011-07-23 05:18:50
【问题描述】:

我有一个response.redirect(url),它转到另一个站点。
如果失败,我应该如何再次重定向到 redirect fail 页面?

  1. 请求是从 aspx 页面后面的代码发送的。
  2. 我有一个 httpmodule。可以用吗?

【问题讨论】:

  • 初始重定向会转到一个完全不同的站点,还是只是您应用程序上的另一个页面?

标签: c#


【解决方案1】:

response.redirect(url) 告诉浏览器请求“url”,因此您无法控制此 url 调用是否在浏览器中失败。

你可以做的是先对那个 url 做一个 HTTP GET HEAD,看看你是否得到 http 200 响应,然后做一个 response.redirect(url)。

【讨论】:

  • 同意。如果新页面位于 OP 控制之外的另一台服务器上,那么唯一的方法是首先测试该服务器是否可用,然后决定是否重定向
  • Nitpick:与其执行 HTTP GET,不如考虑执行 HTTP HEAD 并为自己节省一些带宽 - stackoverflow.com/questions/830435/…
  • @Chris - 因此,无论客户端和服务器(通常)具有完全不同的网络并且以不同的方式查看网络,服务器端的检查是否意味着客户端的某些东西?
  • @Oded:正如您试图指出的那样,服务器完全有可能确实以不同的方式看待事物。如果服务器被锁定而无法发出外部请求,或者它所在的网络配置为阻止某些站点,则可能会出现这种情况。这两者都是可能的,甚至是可能的。如果是这种情况,那么这个答案将完全失败。但是,如果能够执行此操作非常重要,那么我希望 OP(也许还有他/她的老板)可以哄骗网络管理员允许这些出站请求。
  • @Nitpick 是的 http 头对带宽使用更有意义。
【解决方案2】:

这没有多大意义 - 如果重定向失败,服务器将如何发现?

重定向告诉浏览器转到另一个页面 - 如果失败,它会在浏览器上失败并且服务器无法知道它。

【讨论】:

  • 不完全正确。您可以捕获它并在捕获中重定向。我认为问题在于如何告诉它在没有“响应”的情况下重定向,因为对象为空。
猜你喜欢
  • 1970-01-01
  • 2011-11-18
  • 2011-07-24
  • 1970-01-01
  • 2014-06-10
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多