Я написал консольное приложение, используя .NET Core 2.1
.
Ответственность за это приложение: Подключитесь к Azure IoT hub
и отправьте данные.
Я все еще получаю исключение
System.Net.WebSockets.WebSocketException (0x80004005): Невозможно подключиться к удаленному серверу ---> System.Net.Http.HttpRequestException: Невозможно установить соединение SSL, см. Внутреннее исключение.---> System.Security.Authentication.AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.at System.Net.Security.SslState.StartSendAuthResetSignal
Примечание :
- Мой код выполняется на Windows Embedded Standard.
- Использование веб-сокетов
- Прекрасно работает в Windows 10
Вот мои ссылки на nuget
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
Вот как я создаюподключение.
string deviceConnectionString = "*******";
_Client = DeviceClient.CreateFromConnectionString(deviceConnectionString, TransportType.Mqtt_WebSocket_Only);
веб-сокеты не будут работать в Windows 7 .Справка: Использование WebSocket в Windows 7
Поэтому я использую .NET Core 2.1 для получения поддержки веб-сокетов, как упомянуто здесь https://github.com/dotnet/corefx/issues/20191
Тем не менее я получаю то же самоеошибка!
что означает следующее?
Удаленный сертификат недействителен в соответствии с проверкой?
Обновление
Кажется, среда выполнения .NET не может вызвать более старые API Windows Embedded Standard для проверки сертификата для TLS.Мне может понадобиться сделать это в самом коде.
Некоторые подробности находятся по адресу https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support
Другой вариант - скомпилировать C SDK, который уже имеет этот сертификат для TLS.Это можно вызвать через наш код C #.Он будет компактным и менее зависимым.