2011-08-12 34 views
23

Tôi có công cụ chẩn đoán kiểm tra dịch vụ web.Nhận lỗi WebClient dưới dạng chuỗi

Tôi muốn công cụ báo cáo khi có sự cố, vì vậy tôi đã triển khai dịch vụ có vấn đề với hợp đồng để kiểm tra.

Khi tôi duyệt đến nó, tôi nhận được một trang với một thông điệp rất mô tả như:

An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is: System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension:
System.ServiceModel.Description.DataContractSerializerOperationBehavior contract: DataContract for type XXX cannot be added to DataContractSet since type XXX with the same data contract name XXX in namespace XXX is already present and the contracts are not equivalent etc..

Những gì tôi muốn là để có thể gọi:

myErrorMsg = WebClient.DownloadString("MyBadService.svc"); 

và nhận được lỗi này hữu ích thông báo dưới dạng chuỗi, tuy nhiên tôi nhận được WebException sau:

The remote server returned an error: (500) Internal Server Error.

Làm cách nào để có được cùng một lỗi gây rối tuổi tôi nhận được trong trình duyệt được trả về dưới dạng chuỗi, mà không bị ngoại lệ?

Cảm ơn.

+0

500 lỗi có nghĩa là trang web của bạn bị chấm dứt đột ngột. – Zenwalker

Trả lời

54

Bạn phải nắm bắt ngoại lệ và đọc phản hồi.

catch (WebException exception) 
{ 
    string responseText; 

    var responseStream = exception.Response?.GetResponseStream(); 

    if (responseStream != null) 
    { 
     using (var reader = new StreamReader(responseStream)) 
     { 
     responseText = reader.ReadToEnd(); 
     } 
    } 
} 
+1

Cảm ơn bạn tuyệt vời – lockstock

+4

Điều này sẽ phát sinh nếu WebException bị ném do lỗi kết nối, lỗi phân giải tên, v.v. Kiểm tra để đảm bảo có sự trao đổi trước khi cố gắng lấy luồng từ đó. – JamieSee

+0

Haha! cuối cùng đã nhận được giải pháp. Cảm ơn rất nhiều @ccellar – Anand

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