none
Blob存储上传失败问题 RRS feed

  • 问题

  • await blockBlob.UploadFromFileAsync(localFile);
    采用如上方法上传,wp8.1程序,在模拟器中运行一切正常,在真机中运行报错,什么认证失败的,怎么破?
    2015年2月7日 4:05

答案

  • 不好意思 我找到原因了,是手机时间慢了两天,所以发出去的请求应该是被当作过期请求而被azure拒绝了,重新设置时间就好了,谢谢。
    • 已标记为答案 纸房子 2015年2月8日 10:34
    2015年2月8日 10:34

全部回复

  • 您好,

    可以尝试一下代码:

    private async Task<int> UploadToAzureStorage()
            {
                try
                {
                    //  create Azure Storage
                    CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=universalappazurestorage;AccountKey=<your key>");
    
                    //  create a blob client.
                    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    
                    //  create a container 
                    CloudBlobContainer container = blobClient.GetContainerReference("containerone");
    
                    //  create a block blob
                    CloudBlockBlob blockBlob = container.GetBlockBlobReference("filename");
    
                    //  create a local file
                    StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync("filename", CreationCollisionOption.ReplaceExisting);
    
                    //  copy some txt to local file
                    MemoryStream ms = new MemoryStream();
                    DataContractSerializer serializer = new DataContractSerializer(typeof(string));
                    serializer.WriteObject(ms, "Hello Azure World!!");
    
                    using (Stream fileStream = await file.OpenStreamForWriteAsync())
                    {
                        ms.Seek(0, SeekOrigin.Begin);
                        await ms.CopyToAsync(fileStream);
                        await fileStream.FlushAsync();
                    }
    
                    //  upload to Azure Storage 
                    await blockBlob.UploadFromFileAsync(file);
    
                    return 1;
                }
                catch
                {
                    //  return error
                    return 0;
                }
            }

    可参考该code https://code.msdn.microsoft.com/windowsapps/Universal-Windows-Apps-1ea96689

    同时,您可以将您的错误信息写全,方面进一步的诊断和纠错。

    Regards,

    Will

    如果您想进一步了解Windows Azure, Windows Azure 官网欢迎您的访问


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.



    2015年2月7日 6:58
    版主
  • 不好意思 你这个和我原来写的一样,还是报错,我用try catch输出Exceptionn.message显示是大致如下内容

    HTTPStatusCode:403

    HttpStatusMessage:Server failed to authenticate the request,Make sure the value of authorization header is formed correctly including the signature

    ErrorCode:AuthenticationFailed

    就是await blockBlob.UploadFromFileAsync(localFile);上传这条命令报错

    2015年2月8日 2:36
  • 不好意思 我找到原因了,是手机时间慢了两天,所以发出去的请求应该是被当作过期请求而被azure拒绝了,重新设置时间就好了,谢谢。
    • 已标记为答案 纸房子 2015年2月8日 10:34
    2015年2月8日 10:34