C# 如何在c中获取IOT hub设备的最后一次活动时间#

C# 如何在c中获取IOT hub设备的最后一次活动时间#,c#,azure,iot,azure-iot-hub,C#,Azure,Iot,Azure Iot Hub,我在ASP.NET MVC中有一个应用程序,用于列出物联网设备及其管理。现在我在列表中有了所有twin属性和设备属性。我需要设备的最后一次活动时间来获取活动设备和最近活动设备的详细信息。我想我需要最后的活动时间。有没有办法收集上次活动时间。在azure门户的IOT设备部分显示了“上次活动时间”。请查看使用REST API的情况 您可以在有效负载请求、分页标头等中使用查询字符串: POST https://*****.azure-devices.net/devices/query?api-vers

我在ASP.NET MVC中有一个应用程序,用于列出物联网设备及其管理。现在我在列表中有了所有twin属性和设备属性。我需要设备的最后一次活动时间来获取活动设备和最近活动设备的详细信息。我想我需要最后的活动时间。有没有办法收集上次活动时间。在azure门户的IOT设备部分显示了“上次活动时间”。

请查看使用REST API的情况

您可以在有效负载请求、分页标头等中使用查询字符串:

POST https://*****.azure-devices.net/devices/query?api-version=2018-06-30
Authorization: ---sasToken---
x-ms-max-item-count: 50
x-ms-continuation: ********

{
  "query": "SELECT * FROM devices "
}

您可以使用RegistryManager访问IotHub设备。从那里,您只需创建所需的查询,并将结果转换为内置twin类型。这将允许您保持代码类型并处理对象

下面是我编写的示例代码,其中列出了twins(控制台应用程序)的LastActivityTime:

专用静态注册表管理器注册表管理器;

private static string iotHubConnectionString=“谢谢,这对我帮助很大。我尝试了.GetTwinAsync(deviceId);但上次活动时间返回空值。我的解决方案还有一件事是使用旧的nuget Devices.Shared包。一旦我成功更新它,它就工作了。
 private static RegistryManager registryManager;
    private static string iotHubConnectionString = "<YOUR IOT HUB CONNECTION STRING";
    static void Main(string[] args)
    {
        MainAsync();
        Console.ReadLine();
    }
    static async void MainAsync()
    {
        registryManager = RegistryManager.CreateFromConnectionString(iotHubConnectionString);
        var queryResult = registryManager.CreateQuery("SELECT * FROM devices");
        while (queryResult.HasMoreResults)
        {
            var page = await queryResult.GetNextAsTwinAsync();
            foreach (var twin in page)
            {
                Console.WriteLine("The last activity time of the device {0} is {1}", twin.DeviceId, twin.LastActivityTime);
            }
        }

    }