C# 从Azure IoT Hub获取设备列表
我是微软Azure物联网中心的新手。我想获取我的物联网中心中的设备列表,并检查列表中是否有任何设备 如果我使用控制台应用程序,它可以正常工作C# 从Azure IoT Hub获取设备列表,c#,azure,asp.net-web-api,azure-iot-hub,C#,Azure,Asp.net Web Api,Azure Iot Hub,我是微软Azure物联网中心的新手。我想获取我的物联网中心中的设备列表,并检查列表中是否有任何设备 如果我使用控制台应用程序,它可以正常工作 静态异步void QueryDevices() { registryManager=registryManager.CreateFromConnectionString(DeviceConnectionString); var devices=await registryManager.getDeviceAsync(100);//时间1 sek forea
静态异步void QueryDevices()
{
registryManager=registryManager.CreateFromConnectionString(DeviceConnectionString);
var devices=await registryManager.getDeviceAsync(100);//时间1 sek
foreach(设备中的var项)
{
Console.WriteLine(“分区id:+item.id+”,连接状态:+item.ConnectionState);
}
Console.WriteLine(“\n设备数:+devices.Count());
}
但是如果我在WebAPI中使用“相同”的代码,getDeviceAsync()
会一直运行,没有任何结果
public bool检查iothubconnection(字符串iotHubConnectionString)
{
registryManager=registryManager.CreateFromConnectionString(IoTubConnectionString);
返回CreateConnection().Result;
}
专用异步任务CreateConnection()
{
bool connectionOk=false;
尝试
{
//从物联网中心获取所有设备
var result=await registryManager.getDeviceAsync(10);//这永远不会进一步
if(result.Any())
connectionOk=true;
}
捕获(例外情况除外)
{
connectionOk=false;
掷骰子;
}
返回连接OK;
}
我做错了什么?您可以尝试使用以下代码格式:
...
System.Threading.ThreadPool.QueueUserWorkItem(a => CheckIoTHubConnection(iotHubConnStr));
...
它对我有用
有关更多信息,请参考初始帖子“”
对于这个问题,梅在一定程度上解释道。目前这种方法已经过时,没有替代品。。。