我创建了一个在 Docker 中运行的 Azure IoT 边缘网关,其中包含一个自定义模块,该模块只是一个传递(获取消息并将其发送到上游)。
我创建了一个简单的 .net 控制台应用程序来向网关发送消息,以便对其进行评估。
这是我在控制台应用程序中的代码。
DeviceClient client =
DeviceClient.CreateFromConnectionString("HostName=<my iot hub in azure>.azure-devices.net;DeviceId=<the name of the device>;SharedAccessKey=<my access key>;GatewayHostName=<the name of the IoT Edge Device>");
Message message = new Message();
message.Properties.Add("testproperty", "test");
client.SendEventAsync(message).Wait();
看来,当调用 SendEventAsync 方法时,它将永远挂起。我等了 5 分钟,应用程序一直在等待。如果我从连接字符串中删除 GatewayHostName,它会立即执行,并且我的消息会直接发送到 Azure 中的 IoT 中心。
为什么它不会将消息发送到 IoT Edge 网关?