You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用.NET C#以编程方式获取Azure IoT Hub设备连接字符串

用.NET C#编程获取Azure IoT Hub设备的连接字符串

前提条件

  • 安装NuGet包:Microsoft.Azure.Devices(服务端管理设备仅需此包,Microsoft.Azure.Devices.Client为设备端SDK,无需引入)
  • 持有Azure IoT Hub的服务端连接字符串,且该连接字符串需具备RegistryRead权限

实现步骤

1. 初始化RegistryManager

利用IoT Hub服务端连接字符串创建RegistryManager实例,这是服务端操作设备注册表的核心类。

2. 获取设备信息并生成连接字符串

通过传入的设备ID获取设备详情,从设备对象中提取主/辅对称密钥,结合IoT Hub主机名拼接出标准格式的设备连接字符串。

完整代码示例

using Microsoft.Azure.Devices;
using System;
using System.Threading.Tasks;

class DeviceConnectionStringFetcher
{
    static async Task Main(string[] args)
    {
        // 替换为你的IoT Hub服务端连接字符串
        string iotHubServiceConnString = "HostName=your-hub-name.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=your-access-key";
        string targetDeviceId = "your-target-device-id"; // 传入的目标设备ID

        using var registryManager = RegistryManager.CreateFromConnectionString(iotHubServiceConnString);

        try
        {
            var device = await registryManager.GetDeviceAsync(targetDeviceId);

            if (device == null)
            {
                Console.WriteLine($"设备 {targetDeviceId} 不存在");
                return;
            }

            // 提取IoT Hub主机名
            var iotHubHostName = new Uri(device.ConnectionString).Host;

            // 拼接主/辅连接字符串
            string primaryConnString = $"HostName={iotHubHostName};DeviceId={targetDeviceId};SharedAccessKey={device.Authentication.SymmetricKey.PrimaryKey}";
            string secondaryConnString = $"HostName={iotHubHostName};DeviceId={targetDeviceId};SharedAccessKey={device.Authentication.SymmetricKey.SecondaryKey}";

            Console.WriteLine("主连接字符串:");
            Console.WriteLine(primaryConnString);
            Console.WriteLine("\n辅助连接字符串:");
            Console.WriteLine(secondaryConnString);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"获取失败: {ex.Message}");
        }
    }
}

关键说明

  • 权限限制:服务端连接字符串必须拥有RegistryRead权限(如iothubowner角色,或自定义带该权限的访问策略),否则无法读取设备密钥信息。
  • 连接字符串格式:设备连接字符串遵循固定格式,直接通过设备对象的字段拼接即可,无需额外调用生成API。
  • SDK选择:仅需使用服务端SDK Microsoft.Azure.Devices,设备端SDK用于设备自身连接Hub,不适用于服务端管理场景。

内容的提问来源于stack exchange,提问作者cgsabari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:01:08