2012-08-23 46 views
1

我的代码中存在重定向问题。网络上提出的解决方案都没有为我工作。基本上我的代码是这样的(不是实际的代码,只说明):Response.Redirect无法正常工作。 ThreadAbortException

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

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

下面是一些额外的信息:

    我不使用try catch块
  • 我在这个页面上没有任何UpdatePanels,也没有在母版页中。
  • Application_Error甚至没有触发。
  • 我甚至有第二个按钮是做几乎同样的事情(带来了其他的数据),并成功地重定向到另一个页面(相同的代码)
  • 我在执行过程中感到不改变在web.config什么。

编辑:澄清。无论如何抛出这个例外。重定向到所需的页面不起作用(这意味着我的应用程序中有一个死角,我无法实现)。相反,我正在从应用程序中抛出。

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

+2

看看http://stackoverflow.com/questions/2777105/response-redirect-causes-system-threading-threadabortexception –

+0

我发现了这个问题。它来自其他地方。谢谢你的信息。我学到了新东西! – VictorB

回答

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 
    } 
} 
+0

谢谢你的回答。我发现问题来自其他地方。 – VictorB

1

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

非常感谢您的关注和答复!