无法构造WebException

时间:2017-02-15 08:36:16

标签: c# webclient system.net

我有一个方法,我在WebClient上调用DownloadData。此方法抛出异常,因为URL返回404.由于资源不存在,这是规范所期望的全部。

Web客户端将抛出WebException,我必须从respose读取body,因为它包含带有详细错误的JSON对象。之后我必须再次抛出WebException,因为图层组仍然需要WebException。目前我正在尝试使用当前的详细信息构建WebException,如下所示:

catch(WebException ex)
{
   var response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();   
   dynamic error = JsonConvert.DeserializeObject(response);
   throw new WebException(error.message, null, ex.Status, ex.Response);
}

问题是我在构造WebException时遇到异常。这是消息!

  

最佳重载方法匹配   “System.Net.WebException.WebException(字符串,   System.Net.WebExceptionStatus,System.Net.WebExceptionInternalStatus,   System.Exception)'有一些无效的参数

就像这个构造函数不存在!检查异常中的构造函数并检查catch块中的构造函数。

正如您所看到的,我正在使用有效的构造函数。检查here

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

问题是,您需要将error.message转换为字符串。如果您以不同方式处理该字符串会更好,这样您就可以验证error.message是否存在。

catch(WebException ex)
{
    var response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();   
    dynamic error = JsonConvert.DeserializeObject(response);
    throw new WebException((string)error.message, null, ex.Status, ex.Response);
}