即使在使用 C# 中的 REST API 获取成功状态代码后,映像也不会在 Azure 中删除



我正在使用API:https://management.azure.com/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Compute/images/{imageName}?api-version=2019-03-01删除图像。这是代码(代码在图像列表的循环中执行(:

using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken); //obtained from https://management.azure.com/
client.BaseAddress = new Uri(BaseManagementUri); //https://management.azure.com/
using (var responseGet = client.DeleteAsync(api).Result)
{
if (responseGet.IsSuccessStatusCode) //returns true and status code is 202
{
log.LogInformation($"Deleted {resourceUri}");
}
else
{
log.LogWarning($"Failed to deleted {resourceUri}n{responseGet.Content.ReadAsByteArrayAsync().Result}");
}
}
}

响应获取包含:StatusCode: 202, ReasonPhrase: 'Accepted', Version: 1.1, Content: System.Net.Http.HttpConnection+HttpConnectionResponseContentStatusCode: Accepted

当我使用 REST API 检查 Azure 门户或映像列表GET时,我可以看到映像仍然存在。 但是当我运行相同的代码来删除快照时,它被成功删除。我对快照使用相同的 API,如下所示:https://management.azure.com/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Compute/snapshots/{snapshotName}?api-version=2019-03-01.
删除图像应该怎么做?

不同的 REST API 会返回不同的结果,当你拿到202 (Accepted)时,操作不会马上完成,你需要调用另一个如下所示的 API 来检查进度。

GET https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2016-03-30

请检查此文档 -Track asynchronous Azure operations和此示例,此处也有类似的问题。

最新更新