2015-12-30 132 views
0

当我使用下面的代码将文件上传到服务器Azure blob时,我遇到了与Azure Blob存储相关的错误。com.microsoft.windowsazure.services.core.storage.StorageException:服务器无法验证请求

CloudStorageAccount account; 
CloudBlobClient serviceClient; 
CloudBlobContainer container; 
CloudBlockBlob blob; 

final String bucketName = PropertyReader.getValue("aws.properties", bucket); 

account = CloudStorageAccount.parse(storageConnectionString); 
serviceClient = account.createCloudBlobClient(); 
// Container name must be lower case. 
container = serviceClient.getContainerReference(bucketName); 
container.createIfNotExist(); 

// Set anonymous access on the container. 
BlobContainerPermissions containerPermissions; 
containerPermissions = new BlobContainerPermissions(); 
containerPermissions.setPublicAccess(BlobContainerPublicAccessType.CONTAINER); 
container.uploadPermissions(containerPermissions); 

// Upload an image file. 
blob = container.getBlockBlobReference(imageName); 
blob.upload(imageStream, imageArray.length); 

我使用的代码,并建立MYCOMPUTER(Windows 8中)的本地主机上,能正常工作。但是,当我部署到服务器Linux它捕捉异常

com.microsoft.windowsazure.services.core.storage.StorageException:服务器无法验证请求。确保授权标头的值正确形成,包括签名。

我发现这个问题上相关主题 - Azure API The server failed to authenticate the request 但它仍然没有帮助解决我的问题。我该如何解决?

+1

如果不是可运行的HTML/CSS/JS代码,请不要使用Stack Snippets来添加代码。我已将片段更改为普通代码块,更正了格式并改进了一些语法。 – Harry

+0

任何人都可能帮助我:( – Harry

回答

0

这是使用Java客户端库吗?如果这可以在你的本地机器上运行,但是在你的Linux服务器上不能运行,它可能与缓存代理或客户机和服务器之间的类似情况有关。无论如何,如果你看到相同的代码在一个地方但不是另一个地方工作,看起来很可能它是你的最终配置问题,而不是库缺陷。

+0

你好彼得。我需要什么来配置代理客户端或服务器。你能帮我吗?? – Harry

+0

你需要确保你的客户端和你的服务器之间没有缓存 - 我没有见识你如何配置其中的任何一个,如果你可以为失败的请求提供请求ID,我可以再看一下,但这是我的猜测。 –

相关问题