2009-12-29 25 views
18

Tôi đang làm việc trên ứng dụng asp.net .. khi tôi cố gắng biên dịch và chạy ứng dụng; nó chạy thành công.Ngoại lệ đầu tiên của loại 'System.Threading.ThreadAbortException' xảy ra trong mscorlib.dll

Nhưng khi tôi cố gắng để gỡ lỗi các ứng dụng nó mang lại cho tôi lỗi tại bất kỳ điểm -

Một ngoại lệ cơ hội đầu tiên của loại 'System.Threading.ThreadAbortException' xảy ra ở mscorlib.dll

Nó không đưa ra lỗi tại bất kỳ dòng mã cụ thể .. nó cung cấp cho lỗi này tại bất kỳ mã nào của dòng (không chắc chắn) .. và sau đó hiển thị trang web - "Lỗi ứng dụng máy chủ không khả dụng".

Ngay cả khi tôi cố gắng phân tích cú pháp/thực hiện một số tuyên bố trong cửa sổ ngay lập tức/nhanh đồng hồ - nó mang lại cho tôi lỗi trên ..

ví dụ, tôi nạp một tài liệu xml (hơn 10.000 dòng) trong XElement và khi tôi cố gắng kiểm tra một số giá trị thuộc tính thông qua xpath như XElementObj.XPathSelectElement ("/ asdf/asd/wqer/xyz") .. nó cung cấp cho các lỗi trên .. (không phải tất cả thời gian nhưng ngẫu nhiên).

bất kỳ ai có ý tưởng về điều này .. hãy trợ giúp.

+0

Tôi không chắc chắn việc này có liên quan đến 'ngoại lệ cơ hội đầu tiên' - Ngoại lệ cơ hội đầu tiên là ngoại lệ bị bắt và xử lý, duy trì tính toàn vẹn của quy trình làm việc. –

Trả lời

32

Tôi có một cái gì đó tương tự, và thấy this answer từ một câu hỏi khác:

Nếu bạn muốn xác định nơi các ngoại lệ đang xảy ra, bạn có thể chọn Debug-> Exceptions đơn mục, và trong hộp thoại xuất hiện, chọn hộp kiểm đầu tiên cho "Common Ngoại lệ thời gian chạy ngôn ngữ". Điều này sẽ làm cho trình gỡ lỗi bị hỏng ngay sau khi là ngoại lệ xảy ra thay vì chỉ vi phạm các ngoại lệ chưa được xử lý.

Đây cũng là một lý do tại sao nó là thường là một ý tưởng tồi để nắm bắt chung trường hợp ngoại lệ trừ khi bạn rõ ràng là ghi lại thông tin bị bắt.

+0

OMG. Tôi đã quên mất bao nhiêu lần ... Cảm ơn bạn lần nữa vì đã nhắc tôi! Tôi không thích cái mới "Vứt bỏ mọi thứ xung quanh" - áp dụng không thực sự :-) Quá nhiều ngoại lệ, con người ... –

12

tôi đã ngoại lệ này ném vào ứng dụng asp.net của tôi, và thấy this forum post:

PRB: ThreadAbortException xảy ra nếu bạn sử dụng Response.End, Response.Redirect, hoặc Server.Transfer http://support.microsoft.com/default.aspx?scid=kb;en-us;312629

này có ý nghĩa như tôi đã chuyển hướng trên một trang ngay trước khi bất cứ điều gì được trả lại (hành vi dự kiến ​​bằng cách này)

Cách giải quyết bởi MS để ngăn chặn bất kỳ trường hợp ngoại lệ:

Để làm việc xung quanh vấn đề này, sử dụng một trong các phương pháp sau:

  • Đối với Response.End, gọi phương thức HttpContext.Current.ApplicationInstance.CompleteRequest thay vì Response.End để bỏ qua việc thực thi mã cho sự kiện Application_EndRequest.

  • Để phản hồi.Chuyển hướng, sử dụng quá tải, phản hồi.Chuyển hướng (Chuỗi url, bool endResponse) chuyển sai cho tham số endResponse để chặn cuộc gọi nội bộ thành Response.End. Ví dụ: Response.Redirect ("nextpage.aspx", false);

  • Đối với Server.Transfer, sử dụng phương thức Server.Execute thay thế.

Nếu bạn sử dụng giải pháp này, mã theo sau Response.Redirect được thực hiện. Đối với Server.Transfer, sử dụng phương thức Server.Execute để thay thế.

Các vấn đề liên quan