我已经工作了一整天,我需要使用 xamarin 在 c# 中与蚊子 MQTT 代理建立 SSL 连接。
我正在尝试从CertFile创建(证书路径)......
但是,我尝试的所有方法都不起作用。
该文件位于 C:\Cert\MyCARoot.cer
我试过 CreateFromCertFile(@"c:\Cert\MyCARoot.cer");
和
CreateFromCertFile("c:\\Cert\\MyCARoot.cer");
我不断得到的错误是
System.IO.FileNotFoundException: 找不到文件 "/C:\Cert\MyCARoot.cer">
基本上它添加一个"/",然后说路径不好。 我只是不明白我读到的所有内容都说这应该有效。
我不知道xamarin 中的路径有什么问题,但是有一个问题。 我确实找到了解决方案。
- 确保您从活动开始工作。 在
- 资产文件夹中添加要使用的文件(右键单击添加现有文件)
- 实例化一个 AssetManager 类 -- AssetManager assets = this。资产;
现在,这是我的应用程序可能与其他应用程序不同的地方,因为我想从我的资产创建一个字节[],我可以用来实例化x509。2 证书类。
我使用Stream和MemoryStream来获得我想要的结果,如下所示
AssetManager assets = this.Assets;
using (Stream input = assets.Open("ca-bundle.crt"))
{
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
data = ms.ToArray();
}
}
然后,我用我的新字节 [] 实例化了我的连接类,然后 bing、bang、boom 我有一个 ssl 连接到我的 mosquitto mqtt 代理。
我看到的其他应用程序资产。Open("fileInAsset")代替了其他操作的文件路径。
祝你好运