1

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

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 块。
  • 我在此页面上没有任何 UpdatePanel,在母版页上也没有。
  • Application_Error 甚至不会触发。
  • 我什至还有第二个按钮,它做几乎相同的事情(带来其他数据)并成功重定向到另一个页面(相同的代码)
  • 在执行期间,我没有更改 Web.Config 中的任何内容。

编辑:为了澄清。无论如何都会抛出该异常。重定向到所需页面不起作用(这意味着我的应用程序中有一个死部分。我无法访问它。)。相反,我被从应用程序中抛出。

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

4

3 回答 3

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
    }
 }
于 2012-08-24T07:23:31.113 回答
1

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

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

于 2012-08-24T07:42:08.367 回答
1

是的你是。

这是设计使然

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

于 2012-08-23T14:51:12.353 回答