Доступ к файлу .pfx в hololens

#visual-studio #unity3d #mqtt #x509 #hololens

#visual-studio #unity3d #mqtt #x509 #hololens

Вопрос:

Я создаю приложение Hololens Unity и пытаюсь загрузить файлы сертификации подключения для сервера, к которому я подключаюсь в своем приложении. В папке Assets / StreamingAssets находятся файлы .crt и .pfx.

В редакторе Unity и при запуске приложения в Unity файлы считываются правильно, и соединение работает.

Вот код:

 X509Certificate caCert = new X509Certificate(Application.streamingAssetsPath   "/a.crt");
UnityEngine.Debug.Log(caCert   "TRUE");

X509Certificate2 clientCert = new X509Certificate2(Application.streamingAssetsPath   "/b.pfx");     
UnityEngine.Debug.Log(clientCert   "TRUE");

MqttClient client = new MqttClient(broker, 8883, true, caCert, clientCert, MqttSslProtocols.TLSv1_2, MyRemoteCertificateValidationCallback);
  

Моя проблема в том, что когда я развертываю это в thew hololens, я не могу получить доступ к файлу .pfx, и, похоже, он не развернут на hololens, сообщая, что файл не найден (но файл .crt и остальная часть папки есть …).

Еще одна проблема, с которой я столкнулся: я также вручную ввел сертификаты на диск c: hololens, и они отображаются в его проводнике. Я не знаю, как получить к ним доступ, поскольку это было бы более простым решением, если бы я мог просто найти местоположение файла на самом диске hololens и загрузить его из моего приложения.

Если у кого-нибудь есть опыт загрузки файлов в приложения на базе hololens unity и он может помочь мне с загрузкой файлов при использовании приложения на hololens2, я был бы очень признателен.

Ответ №1:

Поскольку приложение HoloLens является приложением UWP, убедитесь, что вы используете обратную косую черту () в качестве разделителя пути. И лучшая практика — использовать Path.Combine() вместо самостоятельного построения путей. Он позаботится обо всех специфичных для платформы префиксах, приложениях, разделителях, косых чертах, обратных косых чертах и т. Д.

 X509Certificate caCert = new X509Certificate(Application.streamingAssetsPath   "/a.crt");
  

=>

 X509Certificate caCert = new X509Certificate(Path.Combine(Application.streamingAssetsPath   "a.crt"));