- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有一个函数,只需每 10 分钟从 Blob 存储中下载文本并检查结果。该函数可以运行数天。但它经常(大约每天)失败,然后出现以下错误。
Caused by: com.microsoft.azure.storage.StorageException: The condition specified using HTTP conditional header(s) is not met.
我的代码非常简单。
public String downloadTextBlob(CloudBlobDirectory dir, String filename) {
try {
return dir.getBlockBlobReference(filename).downloadText();
} catch (StorageException | IOException | URISyntaxException e) {
throw new WorkbenchRuntimeException(e.getMessage(), e);
}
}
我发布了同样的问题here ,我对谈论使用 OperationContext 来解决问题的答案很感兴趣。但问题不是关于 Java 的,答案也没有真正解释它实际上在做什么。
这是建议的解决方案(非java代码)
OperationContext context = new OperationContext();
context.SendingRequest += (sender, e) => {
e.Request.Headers["if-match"] = "*";
};
谁能解释一下这实际上是做什么的?也许我如何在Java中复制这个,我注意到Java azure存储sdk中有一个OperationContext,并且我可以使用操作上下文作为参数来调用.downloadText()。我只是不确定如何处理 OperationContext。
最佳答案
首先,我鼓励您在此处阅读有关 Azure Blob 存储中的条件 header 的信息:https://learn.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations .
我还没有查看 Java SDK 的源代码,但我的猜测是 downloadText()
操作正在幕后执行多个操作。在第一个操作中,它获取 blob 的属性(例如 blob 的长度等),在下一个操作中,它实际上是下载 blob。作为第一个操作的一部分,它还会获取 blob 的 etag,并将相同的 etag 传递给 if-match
header 中的第二个操作。
现在,在第一次和第二次操作之间,blob 发生了一些变化,导致 etag 值发生变化。由于第二个请求仍然使用旧的 etag 值,并且 etag 之间不匹配,因此您的请求失败,并出现前提条件失败
。 if-match
header 中存在 etag 指示存储服务仅当条件匹配(即 etag 匹配)时才执行操作。由于 etag 不匹配,您会收到此错误。
要解决此问题,您需要使用以下 downloadText()
方法重写:
并为if-match
指定带有“*”值的访问条件,这实际上告诉存储服务忽略etag值。您可以在这里了解有关访问条件的更多信息:https://learn.microsoft.com/en-us/java/api/com.microsoft.azure.storage.accesscondition?view=azure-java-legacy .
您的代码将类似于(未经测试的代码):
AccessCondition accessCondition = AccessCondition.generateIfMatchCondition("*");
并在 downloadText() 方法中使用此访问条件。
关于Azure Blob 错误 : StorageException: The condition specified using HTTP conditional header(s) is not met,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62308525/
我正在尝试将 4 个不同的图像上传到 firebase 存储,我的代码适用于单个图像,但是每当我尝试上传多个图像时,我都会得到 E/StorageException: StorageExceptio
我正在使用 Azure 函数,希望更深入地了解如何获取更详细的错误消息。 函数从队列获取输入,这意味着将有多个函数实例并行运行。该函数进行一些处理并希望通过使用 ICollector<> 输出到表存储
打开功能应用程序时,不知何故开始看到此错误,但应用程序正在运行。 Unable to retrieve diagnostics and error information for your funct
我正在使用 Azure 函数,希望更深入地了解如何获取更详细的错误消息。 函数从队列获取输入,这意味着将有多个函数实例并行运行。该函数进行一些处理并希望通过使用 ICollector<> 输出到表存储
打开功能应用程序时,不知何故开始看到此错误,但应用程序正在运行。 Unable to retrieve diagnostics and error information for your funct
我使用的是 NuGet 包 WindowsAzure.Storage 版本 4.2.1。 以下代码尝试从远程数据中心的存储容器下载 blob。 try { var blobRequestOpt
我们的应用程序执行多批TableBatchOperation。我们确保每个表批处理操作都有 100 或更少的表操作 仅对一个实体分区键进行表操作 大致如下: foreach (var
看起来我的 VS2013 有问题,因为这段代码: try { TableResult tblr = await cloudTable.ExecuteAsync(...); } catch (
我一直在寻找这个问题,但我没有在这里找到任何解决方案。我的问题是,当我将新项目发布到 firebase 存储时,一切正常,但是当我尝试下载它时,目录文件夹已成功创建,但文件未下载,因为它向我显示此错误
我在 Flutter 中使用 Firebase 存储。如果上传操作因任何原因失败(例如超过控制台中设置的大小限制),它会导致 StorageException。 我想做这样的事情: try { f
我的应用从 Firebase 存储中获取图像。如果不存在图像,我希望能够处理错误。但我似乎无法让它工作。 我试过用 try catch 包围。 我试过这个 Future getImage(int in
我想检查 Firebase 存储中是否存在文件,如果存在则更新其元数据。OnFailureListener 按预期工作,如下所示: storageRef.child("users/me/file.pn
我正在尝试将图像存储到 FireBase 数据库中,我非常确定所有代码在获取图像链接方面都工作正常,因为它不再像以前那样显示错误。然而现在,当我上传图像时出现了一个新问题。与存储异常有关,我猜测实际从
每隔 30 或 40 分钟,当从我们的 Azure 网站流式传输应用程序日志时,我就会看到以下异常,抱歉......Azure Web App :-) Application: Microsoft.W
语言:C# 框架:.NET 4.5 Nuget:WindowsAzure.Storage 版本 8.0.1 嗨。 我看到一个Microsoft.WindowsAzure.Storage.Storage
我在以下代码中遇到上述异常和错误,这意味着从独立存储中播放选定的 mp3 文件: using (var isf = IsolatedStorageFile.GetUserStoreForApplica
我使用 http://www.windowsazure.com/en-us/develop/net/common-tasks/continuous-delivery/ 中的 powershell 脚本
语言:C# 框架:.NET CORE 1.1.1 Nuget:WindowsAzure.Storage 版本 8.1.1 嗨, 我在 Azure 上使用队列存储。我有 4 个程序,每个程序每秒发出 1
我刚刚遇到它并且完全惊呆了: [#|2012-12-10T14:16:49.663+0100|WARNING|glassfish3.1.1|javax.enterprise.system.core.t
我一直在尝试将图像上传到新的 firebase 存储服务。它正在抛出 StorageException E/StorageException: StorageException has occurre
我是一名优秀的程序员,十分优秀!