2017-07-13 26 views
1

我一直在工作一整天,我需要使用xamarin在c#中的蚊子mqtt經紀人進行ssl連接。Xamarin Visual Studio createcertfromfile路徑沒有工作

我想CreateFromCertFile(路徑CERT)......

然而一切,我嘗試將無法工作。

該文件位於在C:\證書\ MyCARoot.cer

我試圖CreateFromCertFile(@ 「C:\證書\ MyCARoot.cer」);

CreateFromCertFile( 「C:\\證書\\ MyCARoot.cer」);

我不斷收到的錯誤是

System.IO.FileNotFoundException:未能找到文件「/C:\Cert\MyCARoot.cer」

基本上它增加了一個「/」,然後說路徑不好。我只是沒有得到它所說的一切,說這應該起作用。

回答

0

我不知道在xamarin中存在什麼路徑問題,但是存在問題。我確實找到了解決方案。

  1. 確保您從活動中工作。
  2. 將您想要使用的文件添加到您的資產文件夾中(右鍵單擊添加現有)
  3. 實例化AssetManager類 - AssetManager assets = this.Assets;

現在,這是我的應用程序可能與其他人不同的地方,因爲我想從我的資產創建一個byte [],我可以使用它來實例化x509 .... 2證書類。

我用流和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(); 
      } 
     } 

我然後實例化我的連接類與我的新的byte []和Bing,砰,繁榮我有一個SSL連接到我的mosquitto mqtt經紀人。

其他應用程序我看到assets.Open(「fileInAsset」)代替了其他操作的文件路徑。

祝你好運