存在以下容器,因此返回失败的请求代码409
var container = blobClient.GetContainerReference("my-container");
container.CreateIfNotExists();
我会检查以确保在创建之前Blob引用不存在。这将返回带有bool的404响应代码。
if(container.GetBlockBlobReference("this-file-could-exist").Exists()) {
在第一个例子中,我希望容器存在,在第二个例子中,期望文件不存在。但在这两种情况下,我都会进行检查以确保。
代码一切正常。问题是Application Insights警告我一堆失败的请求。虽然这些请求并非真正失败,但实际上是成功的请求,因为这就是我的期望。
解决此问题的最佳方法是什么?我可以让azure返回200成功,还是我需要在Application Insights中以某种方式忽略它们。
答案 0 :(得分:2)
如果您使用的是最新版本的Storage Client Library,则在执行CloudBlobContainer.CreateIfNotExists()
方法时,它实际上会执行create operation,因此有时服务器响应将为409.
版本8.2.0的源代码
如果可能,您可以尝试将Storage Client Library版本降级到v7.2.1。
版本7.2.1的源代码
我在关于操作中执行以下代码,我发现应用洞察中的结果代码 200 。
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
container.CreateIfNotExists();
答案 1 :(得分:0)
一种可能性是在您的应用中添加遥测处理器,丢弃您不想看到的内容。
此示例中的:https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-filtering-sampling
// Example: replace with your own criteria.
private bool OKtoSend (ITelemetry item)
{
var dependency = item as DependencyTelemetry;
if (dependency == null) return true;
return dependency.Success != true;
}
他们有一个遥测处理器,只是忽略了成功的任何依赖调用,只发送失败的依赖的遥测。
你可以编写类似的逻辑,只过滤掉409的依赖关系,或者你可以修改409的依赖关系并将它们标记为成功而不是失败。