C# 将WebClient错误获取为字符串
我有一个测试web服务的诊断工具 我希望该工具在出现问题时进行报告,因此我部署了一个有合同问题的服务来测试它 当我浏览到它时,我会看到一个带有非常描述性信息的页面,例如: ExceptionDetails,可能由IncludeExceptionDetailInFaults=true创建, 其值为: System.InvalidOperationException:调用WSDL时引发异常 导出扩展:C# 将WebClient错误获取为字符串,c#,web-services,webclient,C#,Web Services,Webclient,我有一个测试web服务的诊断工具 我希望该工具在出现问题时进行报告,因此我部署了一个有合同问题的服务来测试它 当我浏览到它时,我会看到一个带有非常描述性信息的页面,例如: ExceptionDetails,可能由IncludeExceptionDetailInFaults=true创建, 其值为: System.InvalidOperationException:调用WSDL时引发异常 导出扩展: System.ServiceModel.Description.DataContractSeria
System.ServiceModel.Description.DataContractSerializeRopection行为 合同:类型XXX的DataContract无法添加到DataContractSet,因为类型 命名空间XXX中具有相同数据协定名称XXX的XXX已存在 合同不对等等 我想要的是能够呼叫:
myErrorMsg = WebClient.DownloadString("MyBadService.svc");
并以字符串形式获取此有用的错误消息,但我得到以下WebException:
远程服务器返回错误:(500)内部服务器错误
我如何才能获得与我在浏览器中收到的错误消息相同的返回字符串,而不获得异常
谢谢。您必须捕获异常并阅读响应
catch (WebException exception)
{
string responseText;
var responseStream = exception.Response?.GetResponseStream();
if (responseStream != null)
{
using (var reader = new StreamReader(responseStream))
{
responseText = reader.ReadToEnd();
}
}
}
500错误意味着您的网站意外终止。如果由于连接错误、名称解析失败等原因引发WebException,这将导致崩溃。在尝试从中获取流之前,请检查以确保存在repsonse。哈哈!终于找到了解决办法。非常感谢@ccellar