Response.Redirect无效。 ThreadAbortException

时间:2012-08-23 14:48:53

标签: asp.net response.redirect threadabortexception

我的代码中存在重定向问题。网上提出的解决方案都没有对我有用。基本上我的代码就是这个(不是实际代码,只是描述):

protected void btnCool_Click(object sender, EventArgs e)
{
    GetDataFromInterface();
    GetDataSpecificDataFromDB();
    SaveDataOnSession();
    Response.Redirect("SomePage.aspx", false);
    Context.ApplicationInstance.CompleteRequest();
 }

一切都很好地执行,但是在方法执行之后我才被扔到登录页面。在VS的输出窗口中,我看到:“类型'System.Threading.ThreadAbortException'的异常在mscorlib.dll中发生,但未在用户代码中处理。”

以下是一些额外信息:

  • 我没有使用try catch块。
  • 我在此页面上没有任何UpdatePanel,也没有在母版页中。
  • Application_Error甚至没有触发。
  • 我甚至有第二个按钮可以执行几乎相同的操作(带来其他数据)并成功重定向到另一个页面(相同的代码)
  • 执行期间我没有在Web.Config中更改任何内容。

修改以便澄清。无论如何都会抛出异常。重定向到所需的页面不起作用(这意味着我的应用程序中有一个死的部分。我无法达到它。)。相反,我会被从应用程序中抛出。

拜托,请帮我解决这个问题。我真的没有任何我可以遵循的线索所以任何建议可能会有所帮助。

3 个答案:

答案 0 :(得分:1)

是的,你这样做。

这是设计

http://support.microsoft.com/kb/312629

答案 1 :(得分:1)

是的,默认情况下是这样。 这种情况的最佳做法如下所述

protected void btnCool_Click(object sender, EventArgs e)
{
    try{
    GetDataFromInterface();
    GetDataSpecificDataFromDB();
    SaveDataOnSession();
    Response.Redirect("SomePage.aspx", false);
    Context.ApplicationInstance.CompleteRequest();
     }
    catch(ThreadAbortException Thrdex)
    {}
    catch(Exception ex)
    {
    //Handle exception
    }
 }

答案 2 :(得分:1)

确定。我发现了这个问题。这是PICNIC的经典案例。 该页面未实现允许访问特定类型用户的界面。 好吧,至少我学到了很多关于重定向和异常的知识。

非常感谢您的兴趣和答案!