我正在尝试通过 Azure 中的 C# SDK 更新设备孪生的标签。虽然在本地执行 GetNextAsTwinAsync() 工作正常,但在 Az 功能应用程序上部署函数后,该函数返回 null。 我尝试调试查询并返回 true,而且我找不到任何替代函数。我的代码是
string fetchQuery = $"SELECT * FROM devices WHERE deviceId = '{device.Id}'";
var query = _registry.CreateQuery(fetchQuery, 1);
var page = await query.GetNextAsTwinAsync();
var twin = page.FirstOrDefault();
if (twin != null)
{
var patch =
@"{
tags: {
tenantId: " +
tenantId +
@",
__type__: 'iiotedge',
os: 'linux'
}
}";
_telemetryClient.TrackTrace("updating twin" + $"{patch}");
var UpdateTwinStatus = await _registry.UpdateTwinAsync(twin.DeviceId, patch, twin.ETag)
我想为基于 deviceId 的设备更新设备孪生标签
更新前 :
var connectionString = "your connection string"; var registryManager = RegistryManager.CreateFromConnectionString(connectionString);
var query = registryManager.CreateQuery("SELECT * FROM devices", 100);
while (query.HasMoreResults)
{
var twins = await query.GetNextAsTwinAsync();
foreach (var twin in twins)
{
twin.Tags = new TwinCollection();
twin.Tags["location"] = "Building A";
twin.Tags["temperature"] = "72F";
await registryManager.UpdateTwinAsync(twin.DeviceId, twin, twin.ETag);
log.LogInformation($"Tags updated for device {twin.DeviceId}");
log.LogInformation($"Tags: {twin.Tags}");
}
}
await registryManager.CloseAsync();
return new OkResult();
更新后:
输出:
在 Azure 中: