异步返回异常时找不到C#方法

时间:2018-04-20 14:16:28

标签: generics asynchronous exception missingmethodexception

尝试调用以下方法时收到异常(找不到方法)。

    public static async Task<HttpResponseMessage> Send(HttpRequestMessage request) {

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        HttpResponseMessage response = await HttpClient.SendAsync(request);

        if (response.IsSuccessStatusCode)
            return response;

        throw new HttpResponseException(response);
    }

由于最后一行显式异常抛出而发生故障。

如果我改变

throw new HttpResponseException(response);

return null;

找到方法。

我想了解在尝试抛出异常时无法找到该方法的具体原因(泛型/ async / TaskAwaiter无法匹配所有代码路径?)。

您能否建议我如何以正确抛出异常的方式对方法进行编码?

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

原来这是一只红鲱鱼。该问题与方法签名,泛型或异步操作无关。这是一个.Net标准版本问题,如下所述:

Why "Method not found: 'Void System.Web.Http.HttpResponseException..ctor" after package update?

添加以下绑定重定向解决了问题:

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
  </dependentAssembly>