【问题标题】:ASP.NET Response.Redirect() doesn't work without try/catch没有 try/catch ASP.NET Response.Redirect() 不起作用
【发布时间】:2013-02-25 13:11:47
【问题描述】:

我遇到了一个问题,我之前没有通过ASP.NET 解决这个问题。我无法使用 Response.Redirect() 方法重定向到某个位置

我已经阅读了其他主题,可能会告诉你,我到底尝试了什么:

  • 我没有在try/catch 块中使用Response.Redirect(),这可能会导致ThreadAbortException(但是如果您尝试忽略此异常-您必须被重定向,即使在这种情况下我也无法重定向)
  • 我尝试使用 Boolean 值,在 Page_Load() 方法末尾使用它们作为标志来进行重定向
  • 我什至尝试使用带有 location 属性的 JS 调用,但 ASP.NET 忽略了它...我看到我可以调用 JS 中的任何函数,但它会被忽略
  • 尝试将方法Response.Redirect()的第二个参数的值设置为false

我将粘贴ONLY 的其中一种变体,因为我在写upper 时尝试了不同的方法,但没有成功。

代码:http://ideone.com/Y8Fwpt

即使有ThreadAbortException 的处理程序,58th 行上的重定向也不起作用。在62nd 行上调用 JS 场景 - 也会忽略。

即使我删除 try/catch block - 什么都不会改变。

请帮我解决这个问题!

【问题讨论】:

  • 可能需要使用Request 而不是Response
  • @TiesonT。 Request 类没有 Redirect() 方法。
  • 啊,是的,你是对的。我以为我在一个项目中使用了Request,但它是Response。例如,您在 Global.asax 中是否有任何内容可能会将某些内容附加到输出流?
  • @TiesonT。不,我没有,你可以在这里下载我的项目(vs2010 需要):81.176.229.82/WebApplication1.zip,如果你能帮助我,我会很高兴
  • 请求是否成功完成?你检查过 Firebug / Chrome

标签: c# asp.net multithreading exception response.redirect


【解决方案1】:

如果我删除了您在登录表单上的onclick(),我可以使重定向工作 - 我认为您的查询字符串没有正确出现,所以您最终只是快速刷新页面。所以,我会提出两个建议:

一个,删除您尝试执行的所有脚本和 Ajax 内容,并首先使其与正常回发一起工作 - 然后您可以返回并尝试异步内容。

两个,此时我不会创建自己的 cookie - MySQLConnector 库有 MembershipRole 提供程序,您可以使用它们来连接 MySQL 数据库。

简而言之,我在开发时非常重视的成语是“做最简单的可行的事情”,在这种情况下,它只是“经典”的 ASP.NET 回发...

HTH。

【讨论】:

  • 感谢您的出色回答...我现在正在使用回发,但我对这个问题不满意...我想在一个页面上递归地进行 GET 查询以监控状态并希望独立于页面刷新。似乎是,这个问题与 AJAX 相关。
  • @OlegOrlov 你仍然可以,尽管我不得不说,由于 ViewState 机制,部分页面刷新比在 WebForms 中应该做的工作要多。一种可能可行的选择是构建页面,以便页面请求加载 UpdatePanel 以及当时存在的任何状态,然后以预定义的时间间隔获取新的“当前”状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多