在Response.Redirect上捕获错误

时间:2013-04-05 16:59:05

标签: asp.net visual-studio-2008

我们正在使用Response.Redirect将用户发送到网站进行问卷调查。我们有一个数据库,存储有关用户参与调查资格的信息,如果符合条件,主页上会显示“Take Survey”按钮,变量会存储调查的URL。

TakeSurvey_Click事件中,代码原来如下:

FormsAuthentication.SignOut();
Response.Redirect(TheURL);

非常直接,多年来一直很好。最近,我们更改了用户被重定向到的网站。成千上万的用户没有问题;然而,对于一个相当重要的群体(2-3%),按下“Take Survey”按钮时没有任何反应。

我在搜索互联网后相当肯定,我已经尝试了所有推荐的方法来处理这种情况,但没有一个真正做到我想要的。我想要发生的是,如果Take Survey没有将用户发送到链接(BTW,我们已经检查了为非工作链接生成的链接,并且它们是很好的链接),我想要一个信息页面出现告诉他们我们有问题,如果他们可以向我们发送有关他们的环境的一些信息,它将有助于解决问题。看起来很简单,但无论我尝试什么,我要么不能让页面不显示,要么,如果我使用覆盖并发送错误,它永远不会显示,也永远不会重定向。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Response.Redirect向浏览器发送“302 Moved”响应。浏览器负责导航到目标网址。

因此,一旦您发布了Response.Redirect,它就会失控,并且没有简单的方法可以检测到浏览器未成功导航到您选择的网址。

现在,有几种不同的方法(我可以想到这样做):

  • 您可以从客户端JavaScript设置document.location
  • 发布重定向的页面可以定期刷新(使用JavaScript或meta refresh)。如果它应该在其他地方发现后仍然在同一页面上,那么它可以发出警告。
  • 或者,更简单地说,发布重定向的页面可能只有说明“我们正在发送给您进行调查。如果在30秒之后,您仍在查看此消息,则表明出现了问题。”