c# - 即使在 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}");
}
}
}
responseGet 包含:StatusCode: 202, ReasonPhrase: 'Accepted', Version: 1.1, Content: System.Net.Http.HttpConnection+HttpConnectionResponseContent
, StatusCode: Accepted
.
GET
当我使用 REST API检查 Azure 门户或图像列表时,我可以看到图像仍然存在。但是当我运行相同的代码来删除快照时,它会成功删除。我对快照使用相同的 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
和这个示例,这里也是一个类似的问题。
推荐阅读
- javascript - 如何为数据表建模数据?
- java - Netty worker 和 boss 线程配置性能问题
- javascript - DynamoDB batchwriteItem 不会将数据放入 Lambda 函数中的动态 TableName
- python - 将 1 列拆分为 2 列 pandas 数据框 AttributeError .str
- ruby-on-rails - 运行 rails test 时无法理解 SQLException
- linux - sendmail - 具有相同的 from 和 to 主机名
- mysql - MySQL 数据库中的字符串值不正确
- javascript - Kendo Grid:如何更改模板中的字段值?
- java - Android 将 Java API 追溯到 jni
- api - 从 apache-tomcat-8.0.30 升级。到 8.5.35。导致对我们 API 的一些 POST 请求的 403 响应