【发布时间】:2019-03-31 16:37:42
【问题描述】:
我在 IBM Watson IoT Platform 中创建了一个应用程序,并使用提供的代码示例连接了一个 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 上接收这些事件,我只有 Command 有问题。
编辑:添加说明 - 我不知道使用了哪个端口,它是管理连接的 IBMWIoTP,但文档说要打开 1883、80、8883 和 443。 我在 Windows 防火墙和路由器中都这样做了。
-
发布方法是这样的:
appClient.publishCommand("Raspberry", "Pi2B", "pi", "txt", data, 0); 其中 Raspberry 是设备类型; Pi2B为设备id,pi为主题,txt为格式,data为字符串,0为QoS。
我正在使用 IBM 推荐的 Nuget 库:IBMWIoTP
- 我尝试在安全中设置 TLS 选项,但这并不能解决问题
- 我在 IBMWIoTP 库源代码中的 connect 方法上找到了未捕获异常的确切时刻:
connevtionState = mqttClient.Connect(clientId, clientUsername, clientPassword,cleanSession,keepAlivePeriod);
【问题讨论】:
-
你通过什么端口连接?它看起来像安全连接,所以我猜它超过了 8883。你在使用什么库?发布方法长什么样子?
-
我编辑了我原来的问题来回答。
标签: c# ibm-cloud watson-iot