2010-05-06 23 views
8

Tôi thỉnh thoảng gặp phải vấn đề ngoại lệ ứng dụng được ném trong tuần tự WCF (sau khi trả về một DataContract từ OperationContract). Các chỉ (và ít đầy ý nghĩa) thông điệp mà tôi nhận được làLàm thế nào để theo dõi các vấn đề serialization WCF/ngoại lệ

System.ServiceModel.CommunicationException : Kết nối tiềm ẩn đã đóng: Kết nối đã được đóng bất ngờ.

mà không có bất kỳ thông tin chi tiết nào về ngoại lệ bên trong, điều này thực sự khó tìm ra nguyên nhân gây ra lỗi trong quá trình tuần tự hóa.

Có ai đó biết cách tốt để bạn có thể theo dõi, ghi nhật ký và gỡ lỗi các ngoại lệ này không? Hoặc thậm chí tốt hơn tôi có thể bắt ngoại lệ, xử lý chúng và gửi một FaulMessage được xác định cho khách hàng?

cảm ơn bạn

Trả lời

5

Bạn sẽ nhận được ngoại lệ bên trong nếu bạn cấu hình hành vi dịch vụ của bạn như thế này:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
       <behavior name="YourServiceBehaviour"> 
        ... 
        <serviceDebug includeExceptionDetailInFaults="true" /> 
        ... 
       </behavior> 
     </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

Ngoài ra bạn có thể kích hoạt truy tìm. Không tìm thấy một bài viết tốt bây giờ, nhưng có lẽ điều này giúp bạn bắt đầu:

http://developers.de/blogs/damir_dobric/archive/2009/03/24/using-of-wcf-trace.aspx

+4

cảm ơn câu trả lời của bạn. Thuộc tính includeExceptionDetailInFaults chỉ áp dụng cho các ngoại lệ xảy ra bên trong các ranh giới OperationContract của bạn. các vấn đề trong quá trình tuần tự hóa xảy ra bên ngoài các ranh giới này. Đề xuất thứ hai của bạn có thể là giải pháp để ghi lại (nhưng không xử lý) những vấn đề này. Tôi sẽ xem xét kỹ hơn. – Fabiano

+0

Cảm ơn bạn đã liên kết. Việc đăng nhập đã giúp tôi tìm ra vấn đề. – Walkor

0

Tôi có vấn đề đó, và đó là một vấn đề serialization ... đôi khi tôi đã gửi một DataTable mà không cần bất kỳ cột, trong đó trường hợp kênh chỉ đóng mà không có bất kỳ lỗi hoặc dấu vết nào.

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