将WebClient错误作为字符串获取

时间:2011-08-12 06:42:28

标签: c# web-services webclient

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

我希望该工具在出现问题时进行报告,因此我部署了一个合同问题的服务来测试它。

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

  

ExceptionDetail,可能由IncludeExceptionDetailInFaults = true创建,       其价值是:       System.InvalidOperationException:在对WSDL的调用中抛出异常       出口延期:
      System.ServiceModel.Description.DataContractSerializerOperationBehavior       contract:类型XXX的DataContract无法添加到DataContractSet类型       名称空间XXX中具有相同数据协定名称XXX的XXX已存在       合同不等同等。

我想要的是能够打电话:

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

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

  

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

如何在浏览器中收到以字符串形式返回的相同错误消息,而不会出现异常?

感谢。

1 个答案:

答案 0 :(得分:62)

您必须捕获异常并阅读响应。

catch (WebException exception)
{
  string responseText;

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

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