将WebClient错误作为字符串获取

我有一个测试Web服务的诊断工具。

我希望工具在出现问题时进行报告,因此我已经部署了一个服务,但合同有问题需要对其进行测试。

当我浏览它时,我得到一个带有描述性信息的页面,例如:

ExceptionDetail,可能由IncludeExceptionDetailInFaults = true创建,其值为:System.InvalidOperationException:在对WSDL导出扩展的调用中抛出exception:
System.ServiceModel.Description.DataContractSerializerOperationBehavior契约:类型XXX的DataContract无法添加到DataContractSet,因为名称空间XXX中具有相同数据协定名称XXX的类型XXX已存在且合同不等同等。

我想要的是能够打电话:

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

并将此有用的错误消息作为字符串,但我得到以下WebException:

远程服务器返回错误:(500)内部服务器错误。

如何在浏览器中收到的相同错误消息作为字符串返回,而不会出现exception?

谢谢。

您必须捕获exception并阅读响应。

 catch (WebException exception) { string responseText; var responseStream = exception.Response?.GetResponseStream(); if (responseStream != null) { using (var reader = new StreamReader(responseStream)) { responseText = reader.ReadToEnd(); } } }