我正在尝试创建某种推送管理器(客户端),它将听服务器所说的话。

没什么难的...感谢WebSocket4Net,在C#上,我已经在PC端编写了它,并且效果很好。

但这是问题所在...:我的应用程序也必须在Mac上使用相同的代码运行。我显然使用Mono,并且WebSocket4Net lib有效。不幸的是,每次我尝试打开一个套接字时,都有一个漂亮的“ RemoteCertificateNotAvailable”,后跟一个“ Invalid certificate received from server”。

以下是我在网上的一些建议下尝试的方法:

webSocket.AllowUntrustedCertificate = true;
System.Net.ServicePointManager.ServerCertificateValidationCallback = callbackValidation;


该代码是基本代码,看起来像lib网站上的代码:https://websocket4net.codeplex.com

我不知道为什么这些解决方案不起作用。其他帖子说这应该工作,我不知道为什么它不在这里。

它可以通过将受信任的证书手动添加到Mono(mozroots --import --sync)或使用certmgr或类似方法来工作。但是我不想要这种解决方案,因为它需要在我的计算机以外的任何其他计算机上工作,而无需安装任何工具。
我可以接受在我的应用程序中运行一些将安装一些证书的命令...假设我对这些解决方案感兴趣。
但是我宁愿找到一个暗示一些C#代码行的解决方案。

那么...有人绕过这个问题有想法吗?

最佳答案

好的,WebSocket4Net库的创建者实际上在8月对此进行了修复。
System.Net.ServicePointManager.ServerCertificateValidationCallback现在可以使用。

09-25 16:01