使用 IoT 中心发送 C2D 消息时无法设置 ExpiryTimeUtc 字段
Unable to set ExpiryTimeUtc field when sending C2D messages using IoT Hub
堆栈溢出问题
我有一个可以向 Android 设备发送消息的控制台应用程序。每当我尝试发送已设置 ExpiryTimeUtc 的消息时,serviceClient.SendAsync 方法会引发异常:
Unhandled Exception: Microsoft.Azure.Devices.Common.Exceptions.IotHubException:
Tracking Id:{TRACKING_ID_OMITTED}-TimeStamp:09/24/2019 00:23:41-G:20-TimeStamp:09/24/2019 00:23:41
at Microsoft.Azure.Devices.AmqpServiceClient.SendAsync(String deviceId, Message message, Nullable`1 timeout)
我检查了异常代码及其 InvalidErrorCode
,一点帮助也没有。
这是产生异常的片段(当 ExpiryTimeUtc
未设置时,完全相同的代码有效:
var message = new Message();
message.MessageId = messageId;
message.Ack = DeliveryAcknowledgement.Full;
message.CreationTimeUtc = creationTime;
message.ExpiryTimeUtc = DateTimeOffset.UtcNow.DateTime.AddMinutes(1);
message.Properties.Add("type", "TEST_TYPE");
message.Properties.Add("test_data", data);
message.Properties.Add("checksum", checksum);
message.Properties.Add("page", pageNumber.ToString());
message.Properties.Add("page_total", total);
我正在使用 Microsoft.Azure.Devices v1.18.1
和 Microsoft.NETCore.App v2.1.0
。
根据我的测试,DateTimeOffset.UtcNow.DateTime.AddMinutes(1)
没有设置 Kind
属性。
您可以改用DateTime.UtcNow.AddMinutes(1)
。它会起作用。
堆栈溢出问题
我有一个可以向 Android 设备发送消息的控制台应用程序。每当我尝试发送已设置 ExpiryTimeUtc 的消息时,serviceClient.SendAsync 方法会引发异常:
Unhandled Exception: Microsoft.Azure.Devices.Common.Exceptions.IotHubException: Tracking Id:{TRACKING_ID_OMITTED}-TimeStamp:09/24/2019 00:23:41-G:20-TimeStamp:09/24/2019 00:23:41 at Microsoft.Azure.Devices.AmqpServiceClient.SendAsync(String deviceId, Message message, Nullable`1 timeout)
我检查了异常代码及其 InvalidErrorCode
,一点帮助也没有。
这是产生异常的片段(当 ExpiryTimeUtc
未设置时,完全相同的代码有效:
var message = new Message();
message.MessageId = messageId;
message.Ack = DeliveryAcknowledgement.Full;
message.CreationTimeUtc = creationTime;
message.ExpiryTimeUtc = DateTimeOffset.UtcNow.DateTime.AddMinutes(1);
message.Properties.Add("type", "TEST_TYPE");
message.Properties.Add("test_data", data);
message.Properties.Add("checksum", checksum);
message.Properties.Add("page", pageNumber.ToString());
message.Properties.Add("page_total", total);
我正在使用 Microsoft.Azure.Devices v1.18.1
和 Microsoft.NETCore.App v2.1.0
。
根据我的测试,DateTimeOffset.UtcNow.DateTime.AddMinutes(1)
没有设置 Kind
属性。
您可以改用DateTime.UtcNow.AddMinutes(1)
。它会起作用。