azure - 来自 InvokeDeviceMethodAsync 的间歇性 501 响应 - Azure IoT
问题描述
InvokeDeviceMethodAsync
间歇性地(并且只是最近)在响应中返回状态代码 501(响应正文为空)。
我理解这意味着未实施。但是,该方法已实现 - 事实上,它是唯一的方法。设备正在使用Microsoft.Azure.Devices.Client
(1.32.0-preview-001
因为我们也在预览设备流功能)。
设置,设备端
这都是在启动时调用的。在此之后,一些调用成功,一些失败。
var deviceClient = DeviceClient.CreateFromConnectionString(connectionDetails.ConnectionString, TransportType.Mqtt);
await deviceClient.SetMethodHandlerAsync("RedactedMethodName", RedactedMethodHandler, myObj, cancel).ConfigureAwait(true);
调用,服务器端
var methodInvocation = new CloudToDeviceMethod("RedactedMethodName")
{
ResponseTimeout = TimeSpan.FromSeconds(60),
ConnectionTimeout = TimeSpan.FromSeconds(60)
};
var invokeResponse = await _serviceClient.InvokeDeviceMethodAsync(iotHubDeviceId, methodInvocation, CancellationToken.None);
我尝试了什么?
- 校验码、方法注册
- 寻找有关 501 的文档:找不到任何
- 查看库的源代码 ( https://github.com/Azure/azure-iot-sdk-csharp/search?q=501 )。看起来像“未实施”,即没有注册
- 从 Azure 门户启用分布式跟踪,采样率为 100%。等了很长时间,但仍然说“设备未与所需设置同步”
- 探索
DeviceClient
对象的智能感知。那里不多!
接下来是什么?
嗯,我想诊断一下。
- 501响应有哪些可能的原因?
- 是否有我可以访问的诊断工具,例如日志记录?
解决方案
推荐阅读
- php - 我尝试使用验证码创建一个表单,但它不显示验证码
- c# - 如何在 Xamain 中使用 MVVM 在列表视图中显示数据?
- python - 合并字典列表
- json - 解组拆分 JSON 消息
- gremlin - 我怎样才能使这种遍历更有效?
- typescript-generics - 有没有办法将泛型信息从父函数传递到子函数的 typeof 函数?
- android - Android - 自定义工具栏中的中心徽标
- javascript - 有没有办法在不使用节点的情况下使用 webpack(或`next dev`)运行 Next.js 站点?
- python - pygame.sprite.Group() 做什么
- android - Pressable 在嵌套视图中不起作用——反应原生