在一个LoginView控件的登录事件中,用了try catch捕捉错误。 但是现在有时会出现thread was being aborted这个错误,怎么查也不知道原因。
登录事件的主要代码如下:        protected void login_OnAuthenticate(object sender, AuthenticateEventArgs e)
        {
            try
            {
                Login login = (Login)LoginView1.FindControl("Login1");
                string userName = login.UserName.Trim();
                string password = login.Password.Trim();                /*这里是验证用户的代码,没有任何Response.End(); Response.Redirect();类的代码。*/
            }
            catch (Exception ex)
            {
                /*写入错误日志*/                throw ex;
            }
        }

解决方案 »

  1.   


     try 
                { 
                    Login login = (Login)LoginView1.FindControl("Login1"); 
                    string userName = login.UserName.Trim(); 
                    string password = login.Password.Trim();                 /*这里是验证用户的代码,没有任何Response.End(); Response.Redirect();类的代码。*/ 
                } 
                catch (Exception ex) 
                { 
                    /*写入错误日志*/                 throw ex; 
                } 
    能介绍下这段代码您捕捉异常的意图吗?有何意义呢?
    有错误也仅仅会出现在Login login = (Login)LoginView1.FindControl("Login1"); 
      

  2.   

    把断点设在catch处,看看你捕捉异常。
      

  3.   

    检查你的UserName或者Password属性方法的代码,如果有什么比较“花哨”的数据读写方法,改为简单的。
      

  4.   

    在网上查到的引起thread was being aborted的异常都是Response.Redirect(),Response.End()这些代码引起的。  实在是找不到原因。 
    设断点调试也没用,因为在本地怎么也不出这错误。  在线上也不是经常出现这个错误。 
    但是可以确定的是错误肯定是在这个方法里抛出的。
      

  5.   

    你说的有时是指上面时候,仔细分析一下什么情况会出现这种错误,什么情况不会。登陆成功不是要Redirect吗?不要写在try里面。最好代码贴全点。
      

  6.   

    登录成功后,还在本页的,没有任何跳转的。
    全部代码就这些而已:
    protected void login_OnAuthenticate(object sender, AuthenticateEventArgs e)
            {
                try
                {
                    Login login = (Login)LoginView1.FindControl("Login1");
                    string userName = login.UserName.Trim();
                    string password = login.Password.Trim();                if (Membership.ValidateUser(userName, password))
                    {
                        StudentSystem studentSystem = new StudentSystem();
                        Student student = studentSystem.GetStudent(userName);
                        if (student != null)
                        {
                            Session["student"] = student;
                            e.Authenticated = true;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MethodBase m = MethodBase.GetCurrentMethod();
                    WriteErrorLog(ex, m, EventEnum.Training_Login);                throw ex;
                }
            }
      

  7.   

    做一个异常捕获catch (ThreadAbortException) { },不对异常进行任何处理就行了.