Xamarin PCL使用443以外的其他端口与REST Api进行通信

时间:2016-12-30 09:08:45

标签: c# .net ssl xamarin mono

我有一个Xamarin PCL客户端使用带有Letsnecrypt证书的SSL与WebApi后端通信。使用端口号443时,一切正常(URL中没有:443,只有https)。

我出于各种原因无法使用此端口,因此我切换到了8082。现在我在客户端收到以下错误:

  

错误:SecureChannelFailure(身份验证或解密具有   失败。)

     

在Mono.Security.Protocol.Tls.SslStreamBase.EndRead中   (System.IAsyncResult asyncResult)[0x00051] in   /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs:883   在Mono.Net.Security.Private.LegacySslStream.EndAuthenticateAsClient   (System.IAsyncResult asyncResult)[0x00011] in   /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/Mono.Net.Security/LegacySslStream.cs:475   在Mono.Net.Security.Private.LegacySslStream.AuthenticateAsClient   (System.String targetHost,   System.Security.Cryptography.X509Certificates.X509CertificateCollection   clientCertificates,System.Security.Authentication.SslProtocols   enabledSslProtocols,System.Boolean checkCertificateRevocation)   [0x00000] in   /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/Mono.Net.Security/LegacySslStream.cs:445   在Mono.Net.Security.MonoTlsStream.CreateStream(System.Byte [] buffer)   [0x0001e] in   /Users/builder/data/lanes/3511/77cb8568/source/mono/mcs/class/System/Mono.Net.Security/MonoTlsStream.cs:99

当我在客户端使用浏览器并打开URL时,一切正常。证书已获批准。已经尝试https://www.digicert.com/help/检查证书,一切正常。

我正在使用ModernHttpClient:

client = new HttpClient(new NativeMessageHandler());

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我相信这可能是一个Mono bug [1]已修复,但修复程序只发布到我们的Alpha通道。您可以尝试更新到Alpha通道[2]并查看问题是否已解决?

[1] https://bugzilla.xamarin.com/show_bug.cgi?id=46549

[2]切换更新频道:

  

在Xamarin Studio中,您可以使用Xamarin Studio->检查更新...菜单切换更新频道,在更新频道旁边的下拉菜单中选择稳定,测试版或Alpha,然后单击切换频道按钮。 / p>      

在Visual Studio中,导航到菜单Tools-> Options并向下滚动以展开Xamarin部分并选择" Other"。从下拉菜单中选择Stable,Beta或Alpha,然后单击立即检查。如果对该频道的更新可用,您将获得类似于上述Xamarin Studio的对话框。按上述步骤进行。