尝试调用以下方法时收到异常(找不到方法)。
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无法匹配所有代码路径?)。
您能否建议我如何以正确抛出异常的方式对方法进行编码?
感谢您的帮助!
答案 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>