我有一个函数需要将文本/流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"
},