azure 使用.net从Iothub配置获取部署清单

ldioqlga  于 2023-04-07  发布在  .NET
关注(0)|答案(1)|浏览(131)

我想要的:

我想使用.net在iothub中复制,更改和部署配置,但我不知道如何使用API获取部署清单(deployment_manifest.json)。
我希望将所选配置中的部署清单作为对象。

我尝试的内容:

private static string GetConfiguration(string iotHubName, string token)
        {
            using var client = new HttpClient();

            client.DefaultRequestHeaders.Add("Authorization", token);

            var restUriGet = $"https://{iotHubName}/api/deploymentManifests/opcpublisher?api-version=2022-10-31-preview";

            using var resultGet = client.GetAsync(restUriGet).Result;
            return resultGet.StatusCode.ToString();
        }

这给了我一个坏的请求错误

private static string GetConfiguration(string iotHubName, string token)
    {
        using var client = new HttpClient();

        client.DefaultRequestHeaders.Add("Authorization", token);

        var restUriGet = $"https://{iotHubName}/configurations/opcpublisher?api-version=2020-05-31-preview";

        using var resultGet = client.GetAsync(restUriGet).Result;
        return resultGet.StatusCode.ToString();
    }

这给了我很多信息,但没有JSON。
以下是我使用的文档/教程:microsoft/tutorial

hi3rlvi2

hi3rlvi21#

错误的请求错误可能是由于不正确的manifestIdtoken
检查您是否传递了正确的manifestIdtoken值。还要检查您是否具有访问部署清单的正确权限。

string con = "Connection String";
string device_Id = "deviceId";
string str = GenSas_Token(con, device_Id);

 

var iotHub = "IotHub";
var deployment_ManifestId = "ManifestId";
var token = str;

 

var clnt = new HttpClient();
clnt.DefaultRequestHeaders.Add("Authorization", token);
var restUriGet = $"https://{iotHub}.azureiotcentral.com/api/deploymentManifests/{deployment_ManifestId}?api-version=2022-10-31-preview";

 

var resultGet = await clnt.GetAsync(restUriGet);
var content = await resultGet.Content.ReadAsStringAsync();

 

//To fetch Token
public static string GenSas_Token(string HubConn, string deviceId)
        {
            var builder = new SharedAccessSignatureBuilder()
            {
                Key = "Key",
                Target = $"{HubConn}/devices/{deviceId}",
                TimeToLive = TimeSpan.FromMinutes(20)
            };

 

            return builder.ToSignature();
        }

感谢@Sander货车de Velde提供的Blog
有关详细信息,请参阅MSDoc.

相关问题