PRB: ThreadAbortException จะเกิดขึ้นถ้าคุณใช้ Response.End, Response.Redirect หรือ Server.Transfer

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 312629 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

อาการ

หากคุณใช้วิธีการ Response.End, Response.Redirect หรือ Server.Transfer ข้อยกเว้น ThreadAbortException จะเกิดขึ้น คุณสามารถใช้ข้อความ try-catch เพื่อตรวจจับข้อยกเว้นนี้ได้

สาเหตุ

วิธีการ Response.End จะสิ้นสุดการดำเนินการเพจและเปลี่ยนการดำเนินการของเหตุการณ์ Application_EndRequest ในไปป์ไลน์เหตุการณ์ของแอปพลิเคชัน บรรทัดโค้ดถัดจาก Response.End จะไม่ถูกดำเนินการ

ปัญหานี้เกิดขึ้นในวิธีการ Response.Redirect และ Server.Transfer เนื่องจากทั้งสองวิธีการจะเรียก Response.End ภายใน

การแก้ไข

เมื่อต้องการแก้ไขปัญหานี้ ให้ใช้วิธีการใดวิธีการหนึ่งต่อไปนี้:
  • สำหรับ Response.End เรียกใช้วิธีการ HttpContext.Current.ApplicationInstance.CompleteRequest แทน Response.End เพื่อข้ามการดำเนินการโค้ดไปยังเหตุการณ์ Application_EndRequest
  • สำหรับ Response.Redirect ให้ใช้โอเวอร์โหลด Response.Redirect(String url, bool endResponse) ที่ส่ง เท็จ สำหรับพารามิเตอร์ endResponse เพื่อระงับการเรียกใช้ Response.End ภายใน ตัวอย่างเช่น:
      Response.Redirect ("nextpage.aspx", false);
    						
    หากคุณใช้วิธีการแก้ไขปัญหานี้ โค้ดถัดจาก Response.Redirect จะถูกดำเนินการ
  • สำหรับ Server.Transfer ให้ใช้วิธี Server.Execute แทน

สถานะ

ลักษณะการทำงานนี้จะเป็นไปตามการออกแบบ

คุณสมบัติ

หมายเลขบทความ (Article ID): 312629 - รีวิวครั้งสุดท้าย: 30 สิงหาคม 2556 - Revision: 6.0
ใช้กับ
  • Microsoft ASP.NET 4.5
  • Microsoft ASP.NET 4.0
  • Microsoft ASP.NET 3.5
  • Microsoft ASP.NET 2.0
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Keywords: 
kbexcepthandling kbprb KB312629

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com