如何处理Azure存储Blob容器和云Blob的依赖异常



我有一个函数需要将文本/流blob上传到Azure blob存储中的容器。代码如下:

public async Task<bool> UploadBlobAsync(CloudBlobContainer container,string fileName, string content)
{
BlobRequestOptions options = new BlobRequestOptions 
{
RetryPolicy = LinearRetry(TimeSpan.FromSeconds(20),3), 
ServerTimeout = TimeSpan.FromSeconds(90)
};
await container.CreateIfNotExistsAsync();
CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
await blob.DeleteIfExistsAsync();
await blob.UploadTextAsync(content,null,options,null);
}
}

代码运行良好,但我在Azure AppInsights上看到了依赖异常(409 PUT异常和404 Delete异常(。我不确定是哪一行导致了这个依赖异常的出现。

有人知道为什么会发生这种情况吗,或者是否有任何方法可以防止这些依赖异常记录在Azure AppInsights上?

有人知道为什么会发生这种情况吗,或者是否有任何方法可以防止这些依赖关系异常是否会登录Azure AppInsights?

409的依赖异常来自await container.CreateIfNotExistsAsync();。此方法尝试创建一个blob容器,如果该blob容器存在,blob存储服务将返回一个Conflict (409)异常,此方法将其收回。但是,App Insights依赖关系跟踪仍然会记录此异常。

404的依赖异常来自await blob.DeleteIfExistsAsync();。此方法尝试删除blob,如果blob不存在,blob存储服务会返回一个Not Found (404)异常,此方法会将其吞噬。但是,App Insights依赖关系跟踪仍然会记录此异常。

AFAIK,除了完全关闭依赖性跟踪之外,没有任何方法可以阻止这些依赖性异常记录在Azure AppInsights上。您可以通过在应用程序设置中将EnableDependencyTrackingTelemetryModule设置为false来关闭依赖关系跟踪。

类似于:

"ApplicationInsights": {
....other settings,
"EnableDependencyTrackingTelemetryModule": false,
"ConnectionString": "connection-string"
},

相关内容

  • 没有找到相关文章

最新更新