c# - DeviceTwin 更新属性时出现问题

标签 c# azure azure-iot-hub

我在 C# 中使用 DeviceTwin 更新属性属性时遇到问题。

我执行的代码如下:

            var registryManager = RegistryManager.CreateFromConnectionString(AppSettings.KeyIoT);
            var twin = await registryManager.GetTwinAsync(dto.DeviceIdorId);

            TwinCollection s = twin.Properties.Reported["Power"];

            Power toRet = JsonConvert.DeserializeObject<Power>(s.ToJson());
            toRet.MaximumAvailable = 50;

           var patch =
            @"{
            properties: {
                reported:{
                  Power:" + JsonConvert.SerializeObject(toRet) +
                @"}
                }
            }";

            await registryManager.UpdateTwinAsync(twin.DeviceId, patch, twin.ETag);

我还尝试了以下代码:

            var registryManager = RegistryManager.CreateFromConnectionString(AppSettings.KeyIoT);
            var twin = await registryManager.GetTwinAsync(dto.DeviceIdorId);

            TwinCollection s = twin.Properties.Reported["Power"];

            Power toRet = JsonConvert.DeserializeObject<Power>(s.ToJson());
            toRet.MaximumAvailable = 50;

            twin.Properties.Reported["Power"] = JsonConvert.SerializeObject(toRet);

            Twin updatedTwin = await registryManager.UpdateTwinAsync(twin.DeviceId, twin, twin.ETag);

问题是更新后,如果我重新读取,属性 MaximumAvailable 不会更新。 我究竟做错了什么? 谢谢。

最佳答案

设备孪生报告的属性在面向服务的一侧是只读。查看更多详情here

关于c# - DeviceTwin 更新属性时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59058327/

相关文章:

c# - 开始中级 C# 类(class),重点放在 UML 上……您对经验丰富的建议的最佳建议?

c - 在 Eclipse 中使用适用于 C 的 Azure IoT 插件

python - 在 Azure IoT 中心收到消息时触发函数

c# - 使用 LINQ to SQL 简单级联删除自引用表

c# - 为什么我不能在三元 if 语句中将可为 null 的 int 设置为 null?

c# - 是否可以将 System.Text.Encoding 类从 JSON 反序列化为 C# 中的代码?

node.js - 阻止某些端点不发送到应用程序洞察 - nodejs

azure - MSAL - Azure 交易优惠 - 读取 ID token

azure - 通过 Azure 资源管理器模板部署 Azure 表

azure - 流分析: Dynamic output path based on message payload