5

对于一个项目,我使用 Azure blob 存储来存储上传的图像文件。我还在网站上显示上传的图像 - 但是,这就是问题所在。对 blobstorage 中图像的所有其他请求都会生成一个400 - Multiple condition headers not supported.

阅读此错误最终导致我找到以下有关指定条件请求标头的文档:http: //msdn.microsoft.com/en-us/library/windowsazure/dd179371.aspx

该页面说明了有关指定多个条件标头的以下内容:

如果请求同时指定 If-None-Match 和 If-Modified-Since 标头,则根据 If-None-Match 中指定的条件评估请求。

如果请求同时指定 If-Match 和 If-Unmodified-Since 标头,则根据 If-Match 中指定的条件评估请求。

除了上面列出的两种条件标头组合外,请求只能指定一个条件标头。指定多个条件标头会导致状态代码 400(错误请求)。

我相信 chrome 发送的请求符合本文档中列出的所有要求,但我收到了该错误。

有没有人使用过可能有助于解决此问题的 Azure blob 存储?我将不胜感激!

Chrome 发送的请求:

chrome 发送的请求

Blob 存储服务返回的 XML 响应:

来自 Blob 存储服务的 XML 响应

4

1 回答 1

2

是的,这是因为缓存,至少对我来说是因为缓存。我正在使用 SAS,所以我的解决方案是添加一个额外的参数以避免缓存。

/// token = SharedAccessSignature
    string tick = $"&{ DateTimeOffset.UtcNow.Ticks}";
    Uri url = new Uri(file.StorageUri.PrimaryUri.ToString() + token + tick);

Web 应用程序应忽略额外参数。

于 2017-05-24T10:54:30.380 回答