#c# #ibm-cloud #watson-iot
#c# #ibm-cloud #watson-iot
Вопрос:
Я создал приложение на платформе IBM Watson IoT и использовал предоставленный пример кода для подключения объекта ApplicationClient.
Соединение в порядке, но когда отправляется команда публикации, через секунду или две я получаю это в окне вывода VS2017:
Exception levée : 'System.Net.Sockets.SocketException' dans System.dll
Exception levée : 'System.IO.IOException' dans System.dll
Exception levée : 'System.IO.IOException' dans System.dll
Le thread 0x4a4 s'est arrêté avec le code 0 (0x0).
Exception levée : 'System.Security.Cryptography.CryptographicException'
dans mscorlib.dll
дело в том, что я везде использовал блок try / catch, но они не перехватывают эти исключения.
Я могу предположить, что это связано с перенаправлением портов, но даже после открытия портов, требуемых watson iot, я, похоже, не могу заставить команду работать
Я могу успешно публиковать события с устройства и получать эти события в ApplicationClient, у меня проблемы только с командой.
РЕДАКТИРОВАТЬ: добавить уточнение
-
Я не знаю, какой именно порт используется, подключением управляет IBMWIoTP, но в документах сказано открыть 1883, 80, 8883 и 443. Что я и сделал, как в брандмауэре Windows, так и в моем маршрутизаторе.
-
Метод публикации выглядит следующим образом:
AppClient.publishCommand(«Raspberry», «Pi2B», «pi», «txt», данные, 0); где Raspberry — тип устройства; Pi2B — идентификатор устройства, pi — тема, txt -формат, данные — строка, а 0 — QoS.
-
Я использую рекомендованную библиотеку Nuget от IBM: IBMWIoTP
-
Я попытался установить TLS необязательным в безопасности, но это не решает проблему
-
Я нашел точный момент, когда у меня есть неперехваченное исключение, в исходном коде библиотеки IBMWIoTP, в методе connect:
connevtionState = mqttClient.Connect(clientId, clientUsername, clientPassword,cleanSession,keepAlivePeriod);
Комментарии:
1. через какой порт вы подключаетесь? Похоже, что через безопасное соединение, поэтому я предполагаю, что это через 8883. Какие библиотеки вы используете? Как выглядит метод публикации?
2. Я отредактировал свой первоначальный вопрос, чтобы ответить.
Ответ №1:
Прерванные соединения могут указывать на то, что вы пытаетесь сделать что-то незаконное, например, опубликовать в теме, доступ к которой вам запрещен.
Ответ №2:
Хорошо, я нашел причину…и мне стыдно. Я повлиял на неправильный профиль в приложении, я не смог отправить команду с этим профилем. Я установил стандартный профиль приложения, и теперь все работает нормально. Я потратил слишком много часов на это…