首页 > 解决方案 > 来自 InvokeDeviceMethodAsync 的间歇性 501 响应 - Azure IoT

问题描述

InvokeDeviceMethodAsync间歇性地(并且只是最近)在响应中返回状态代码 501(响应正文为空)。

我理解这意味着未实施。但是,该方法已实现 - 事实上,它是唯一的方法。设备正在使用Microsoft.Azure.Devices.Client1.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);

我尝试了什么?

接下来是什么?

嗯,我想诊断一下。

标签: azureazure-iot-hub

解决方案


看起来,在responseTimeoutInSeconds值中没有来自该方法的响应,因此出于测试目的(以及真正的响应错误)尝试使用REST API来调用设备方法。

您应该收到此处描述的 http 状态代码。


推荐阅读