2017-07-13 8 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;

これは、x509 .... 2証明書クラスをインスタンス化するために使用できる私のアセットから作成されたバイト[]を必要としたため、私のアプリケーションが他と異なる場合があります。

私はその後、私は私のmosquittoへのSSL接続を持っていた、私の新しいバイト[]、およびビング、バタンとブームを私の接続クラスをインスタンス化し、私の望む結果が

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(); 
      } 
     } 

下記参照取得するストリームとのMemoryStreamを使用mqttブローカー。

その他のアプリケーションassets.Open( "fileInAsset")は、他の操作のためのファイルへのパスの代わりに働いていました。

幸運

関連する問題