使用 Visual Studio 调试模块时如何与 Azure IoT Edge 模块和模块孪生交互

How to interact with Azure IoT Edge Module and Module Twin when debugging Module with Visual Studio

我已经设置了一个 Azure IoT Edge 模块,当通过 Azure 将它部署到 IoT Edge 运行时时它工作得很好。

但是,我无法找到在本地调试时如何与模块交互的方法。我需要做的是在其上调用直接方法并在 运行ning 时修改模块孪生。

另外我有一个问题:本地调试模块实际连接到哪里?它是否使用 Visual Studio 中的 "IoT Edge Tools" 中配置的连接字符串打开与 Azure IoT Edge 设备的连接?至少看起来不是这样,因为它不会从 Azure IoT Hub 读取模块孪生的设置。

其他问题:在 Visual Studio 中的边缘解决方案中,当我右键单击项目节点时,我可以 "Build and Push the Module" 到 Azure 容器注册表,并 运行它在模拟器中。我假设运行在模拟器中调试它和调试它不一样?

非常感谢您!

当您在 Visual Studio 中调试模块时,模板以单模块模式启动 iotedgehubdev(又名模拟器)。

使用此模式,您可以通过 REST 向您的模块发送消息 api

curl --header "Content-Type: application/json" --request POST --data '{"inputName": "<input_name>","data":"hello world"}' http://localhost:53000/api/v1/messages

它还会启动您的模块并将其命名为 "target"

iotedgehubdev modulecred -l -m "target"
   EdgeHubConnectionString=HostName=<hostname>;GatewayHostName=localhost;DeviceId=<your-edge-device-id>;ModuleId=target;SharedAccessKey=<key>
   EdgeModuleCACertificateFile=C:\ProgramData\iotedgehubdev\data\certs\edge-device-ca\cert\edge-device-ca.cert.pem

模块目标将可在 Azure 门户 - iothub 中访问。您可以使用接口调用方法和更改双模块

最后,运行 在模拟器中与调试不同。 当您使用该命令时,VS 运行 iotedgehubdev 在模式模拟器中,它将 运行 部署文件中的所有模块并应用路由、配置等

您仍然可以调试该模块,但您必须使用远程调试器,这是另一个主题。