Xamarin/Mono TLS 异常

Xamarin/Mono TLS Exception

我正在组建一个 Xamarin Android 项目,并试图构建一个可以调用 API 的小型应用程序。 Xamarin 项目创建了我在另一个解决方案中拥有的 ApiWrapper class 的实例,并且 class 是进行 Http 调用的原因(不确定这是否重要)。

我在运行时不断获取的堆栈跟踪粘贴在下面:

06-25 12:36:13.696 E/mono-rt ( 3365): [ERROR] FATAL UNHANDLED EXCEPTION: System.Net.Http.HttpRequestException: An error occurred while sending the request

System.Net.WebException: Error: SecureChannelFailure (The authentication or decryption has failed.)

System.IO.IOException: The authentication or decryption has failed.

System.IO.IOException: The authentication or decryption has failed.

Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed.

这是我到目前为止尝试过的方法:

  1. 我已经尝试安装 ModernHttpClient 并将 NativeMessageHandler 传递到 HttpClient() 的构造函数中,但没有成功。
  2. 确保我的应用程序具有互联网权限
  3. 添加了一个自定义验证器 class returns 为真并传递给 ServicePointManager.ServerCertificateValidationCallback
  4. 运行 mozrootscert-sync 尝试为网站提取正确的证书。

此外,需要说明的是,我有一个测试项目仅通过 .NET 的网络堆栈调用同一个 ApiWrapper class,并且它在加密方面没有问题并且工作正常。

我没主意了,在这里苦苦挣扎。任何建议都非常有帮助!谢谢。

我遇到了同样的问题。集成测试能够调用服务并通过,但 运行 来自 Android 模拟器的代码抛出了该错误。还尝试了您上面列出的所有步骤。

最终对我有用的是更改 Android 项目的设置。右键单击该项目,然后单击“属性”。转到 Android 选项并单击高级按钮。

设置..

HttpClient 实现 -> Android

SSL/TLS 实施 -> 本机 TLS 1.2+