2017-02-17 9 views
0

Ниже мой код. который хорошо работает с сеансовой обработкой. Но проблема в том, что когда я нажимаю кнопку выхода на главную страницу, я получаю сообщение об ошибке:Отмена прерывания потока. от страницы почты до выхода страницы

System.Threading.ThreadAbortException: Thread был прерван.

Необходимая помощь о том, как redirect вернуться на страницу входа, если я нажимаю кнопку выхода из системы из MasterPage ..

Ниже код из моего основного aspx файла, который с masterpage.

protected async void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["mail"] == null) 
     { 

      Response.Redirect("~/login.aspx", false); 
      Context.ApplicationInstance.CompleteRequest(); 
     } 
     else 
     { 

      await Task.Run(() => retrivelast()); 
     } 
    } 

Ниже код в главной странице для выхода из системы события

protected void LinkButton2_Click(object sender, EventArgs e) 
    { 
     Session.Abandon(); 
     HttpContext.Current.Session.Clear(); 
     HttpContext.Current.Session.Abandon(); 
     HttpContext.Current.Response.Cookies.Add(new HttpCookie("mail",    "")); 
     Response.Redirect("login.aspx"); 
    } 

Где linkbutton2_click это мой выход из системы событий.

ответ

0

Попробуйте заменить Response.redirect("login.aspx"); с следующее:

Response.Redirect("login.aspx", false); 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 
Visible = false; 

Ваша проблема заключается в том, что переадресация по умолчанию вызывает другой метод, который бросает ThreadAbortException.

Для получения более подробной информации об этом подходе (и более общее решение), см:

https://www.codeproject.com/tips/561490/asp-net-response-redirect-without-threadabortexcep

Другой вариант ловли ThreadAbortException.