首页 > 解决方案 > 使用 IoT 中心发送 C2D 消息时无法设置 ExpiryTimeUtc 字段

问题描述

堆栈溢出问题

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

未处理的异常:Microsoft.Azure.Devices.Common.Exceptions.IotHubException:跟踪 ID:{TRACKING_ID_OMITTED}-TimeStamp:09/24/2019 00:23:41-G:20-TimeStamp:09/24/2019 00:23: 41 在 Microsoft.Azure.Devices.AmqpServiceClient.SendAsync(字符串 deviceId,消息消息,Nullable`1 超时)

我检查了异常的代码及其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

标签: c#azureazure-iot-hub

解决方案


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

在此处输入图像描述

你可以DateTime.UtcNow.AddMinutes(1)改用。它会起作用的。

在此处输入图像描述


推荐阅读