使用IoT中心发送C2D消息时无法设置ExpiryTimeUtc字段

时间:2019-09-24 03:26:21

标签: c# azure azure-iot-hub

堆栈溢出问题

我有一个控制台应用程序,可以将消息发送到Android设备。每当我尝试发送已设置ExpiryTimeUtc的消息时,serviceClient.SendAsync方法都会引发异常:

  

未处理的异常:Microsoft.Azure.Devices.Common.Exceptions.IotHubException:   跟踪ID:{TRACKING_ID_OMITTED}-时间戳:09/24/2019 00:23:41-G:20-时间戳:09/24/2019 00:23:41      在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.1Microsoft.NETCore.App v2.1.0

1 个答案:

答案 0 :(得分:1)

根据我的测试,DateTimeOffset.UtcNow.DateTime.AddMinutes(1)未设置Kind属性。

Utilities.formatDate(...)

您可以改用DateTime.UtcNow.AddMinutes(1)。它将起作用。

enter image description here