【发布时间】:2018-08-22 09:31:21
【问题描述】:
在特定模块上调用直接方法时,我只是在 azure 门户中收到结果[object Object],但我不知道自己做错了什么。
请注意,当我使用 azure IoT SDK for c#(不运行 azure iot 运行时)执行完全相同的操作时,我正确收到了 JSON 对象,并且它不只是显示为 [object Object]。
请注意,我是在 c# 中开发的,并且 docker 容器(用于 IoT 边缘运行时及其模块)正在将 Linux 作为操作系统运行。
我有以下已注册为直接方法的示例方法。
在 iot edge 运行时 Init() 函数中,我执行以下操作:await ioTHubModuleClient.SetMethodHandlerAsync("Sample1", Sample1, null);
示例方法如下所示:
private static Task<MethodResponse> Sample1(MethodRequest methodRequest, object userContext)
{
// Get data but don't do anything with it... Works fine!
var data = Encoding.UTF8.GetString(methodRequest.Data);
var methodResponse = new MethodResponse(Encoding.UTF8.GetBytes("{\"status\": \"ok\"}"), 200);
return Task.FromResult(methodResponse);
}
我可以通过在 Sample1 方法中设置断点来在调试模式下监控这个模块。我找不到我做错了什么?为什么从这个 Sample1 方法返回的响应只是显示为 [object Object],为什么我没有看到 JSON 对象 {"status": "ok"},就像我在不使用 Azure IoT Edge 运行时时看到的那样?
【问题讨论】:
-
更清楚地说,当在未运行 IoT Edge 运行时的“常规”天蓝色 IoT 设备中注册完全相同的方法时,我在天蓝色门户中看到 JSON 结果,而不仅仅是[对象对象]。如果方法响应来自 azure IoT Edge 模块或“常规”IoT 设备,应该没有什么不同,对吧?
标签: azure-iot-hub azure-iot-sdk azure-iot-edge