尝试从UWP Windows 10应用中的Azure Blob存储中加载图像时出现上述错误。完整错误是
的问题相同服务器无法验证请求。确保正确形成Authorization标头的值,包括签名。
我正在使用WindowsAzure.Storage版本6.0.0,我的应用程序在以下方法上失败
public async Task<string> DownloadImageFromBlob(string resourceName)
{
BlobContinuationToken token = null;
var blob = blobContainer.GetBlockBlobReference(resourceName);
try
{
StorageFile file;
var imageFolder = await localFolder.CreateFolderAsync(Secrets.BlobImageDirectory, CreationCollisionOption.OpenIfExists);
file = await imageFolder.CreateFileAsync(resourceName, CreationCollisionOption.ReplaceExisting);
using (var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
//HTTP error 403 on the line below
await blob.DownloadToStreamAsync(fileStream);
return blob.Name;
}
}
catch (Exception e)
{
}
return null;
}
奇怪的是,这是标准代码,在Windows 8.1通用应用程序中运行良好,但在Windows 10 UWP中失败。我不知道为什么?
更新1: 使用上面的代码启动一个全新的UWP项目可以正常工作。所以它不是Windows 10问题,而是项目特定的。
深入挖掘错误消息会显示以下内容
在HTTP请求'HNMOq8xg4P / y + KpCz0bTEJVaUylV5zJUe7gl6Dey6HU ='中找到的MAC签名与任何计算签名不同。服务器使用以下字符串进行签名:'GET \ r \ n \ r \ n \ r \ n \ r \ n \ r \ n \ r \ n \ n \ r \ nWed,2015年4月22日07:58:59 GMT \ r \ n \ r \ n \ nx8D24AE9533BAAA3 \ r \ n \ r \ n \ r \ n \ n \ n-ms-client-request-id:e7cf3a53-8bf1-4eef-b874-32ca126db514 \ r \ n \ n nx-ms-date:2015年10月27日星期二09 :20:00 GMT \ r \ n \ n \ n-ms-version:2015-04-05 \ r \ n / []我的存储空间] / [我的存储容器] /Brownies%201.jpg'。
我注意到2015年4月22日的旧日期,并且不知道这个日期的创建地点
更新2 进一步测试显示其与链接问题完全相同的问题。第一次在UWP应用上运行然后例外