Что я хочу:
Я хочу продублировать, изменить и развернуть конфигурацию в iothub с помощью .net, однако не могу понять, как получить манифест развертывания (deployment_manifest.json
) с помощью API.
Я хочу, чтобы манифест развертывания из выбранной мной конфигурации был объектом.
Что я пробовал:
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 / учебник
Ошибка неверного запроса может быть связана с неправильным
manifestId
илиtoken
.
Проверьте, передаете ли вы правильные значения manifestId
или token
. А также убедитесь, что у вас есть правильные разрешения для доступа к манифесту развертывания.
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 van de Velde за Блог.
Для получения дополнительной информации обратитесь к MSDoc.