无法构造 WebException

Cannot construct a WebException

我有一种方法可以在 WebClient 上调用 DownloadData。此方法自 URL returns 404 以来抛出异常。这都是规范所期望的,因为资源不存在。

Web 客户端将抛出 WebException,我必须从 respose 中读取正文,因为它包含 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 时遇到异常。这是消息!

The best overloaded method match for 'System.Net.WebException.WebException(string, System.Net.WebExceptionStatus, System.Net.WebExceptionInternalStatus, System.Exception)' has some invalid arguments

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

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

这里发生了什么?

问题是,您需要将 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);
}