IoT Hub设备孪生中的etag是什么?

问题描述 投票:0回答:3

我正在.NET Core 3中开发Web应用程序,并且正在使用Microsoft.Azure.Devices.RegistryManager访问Azure Iot集线器。

当我调用registryManager.UpdateTwinAsync()时,我必须发送“ etag”。有时etag会发生变化,并且我收到错误消息,指出存在etag不匹配。

我基本上不了解etag的用途,以及如何安全地更新孪生设备。有人吗?

我尝试捕获那些异常并从设备孪生设备中获取etag,并连续两次尝试重试最多15次,中间等待2秒,这很有帮助,但此错误有时会弹出。我认为应用设备ID足以更新设备孪生,但显然不行

请帮助!

azure-iot-hub
3个回答
0
投票

我的理解是,在更新设备时,ETag用于确保设备孪生上的一致性。它是只读的,因此您可以从设备对中获取它,并将所做的更改传递回UpdateTwinAsync()Link

我不确定您说的ETag发生变化时的意思-您可以提供您正在做什么的代码(或澄清ETag发生变化的时间吗?]

我在YouTube上创建了一个视频,演示了如何读写Azure Device Twins,请随时进行检查,希望对您有所帮助! Link


0
投票

因此,可以简单地说,ETag-实体标签将在我们看到设备状态或任何其他更新发生变化时不断变化。

一个字符串,代表RFC7232 Section 2.3 Etag中设备标识的弱ETag。

An entity-tag是以下项的不透明验证器 区分相同的多个表示 资源,而不管这些多重表示是否 由于资源状态随时间而变化

例如:启用和禁用IoT设备并从Visual Studio代码(Azure IoT Hub Extension)中检查“获取设备信息”>

[步骤1)

我有一个状态为Enabled的初始IoT设备,并且可以看到Etag值。

[步骤2)

当我在IoT中心门户上禁用设备,然后进行第二次查询“获取设备信息”调用时,我在ETag上看到了另一个值。

enter image description here

[Step 3)

现在,当我第二次查询时(例如5分钟间隔后),我看到Etag值保持不变对于相同的设备禁用状态。

enter image description here

**更多信息,请访问Device identity propertiesModule identity properties

**如果您需要更多帮助,请告诉我们!


0
投票

有关设备对孪生如何使用乐观并发来确保来自不同用户的多个潜在更新时的一致性的其他信息,请参阅Microsoft Docs上的Understand and use device twins in IoT Hub > Optimistic concurrency。>

© www.soinside.com 2019 - 2024. All rights reserved.