#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"));