Thread was being aborted

今天在寫非同步時發生了一個問題,即是當我使用了非同步函式,而因為流程的問題並沒有執行到await的語句,反倒是先執行到了Response.Redirect("Lis.aspxt");

這時候就跳出錯誤訊息啦!

「Thread was being aborted」

 


大致上猜測是非同步函式沒被叫到所造成的,上網找了一下

黑大的 ThreadAbortException When Response.End()

微軟的 文章

原因:

Response.End方法會結束執行網頁,並將執行轉移到應用程式的事件管線中的Application_EndRequest事件。在Response.End後面中的程式碼就不會執行。

解法:

  • 針對Response.End,建議改呼叫HttpContext.Current.ApplicationInstance.CompleteRequest方法,而不是呼叫Response.End導致略過Application_EndRequest事件中程式碼的執行。
  • 針對Response.Redirect,建議使用Response.Redirect (字串 url,bool endResponse) 的多載,並在第二個參數endResponse傳遞false ,以避免內部去呼叫Response.End的方法。例如︰
      Response.Redirect ("nextpage.aspx", false);
    
    如果您使用此因應措施時,會執行之後Response.Redirect的程式碼。
  • 為Server.Transfer,請改為使用Server.Execute方法。

LINE討論群FB討論區

歡迎您的加入,讓這個社群更加美好!

聯絡方式:
FaceBook
E-Mail