2011-10-22 89 views
0

我一直在使用下面的代码,我咨询下面跟帖写道 - Use blob-leasing feature in the Azure cloud appWindows Azure中的BLOB租赁

public static void UploadFromStreamWithLease(CloudBlob blob, Stream src, string leaseID) 
    { 
     string url = blob.Uri.ToString(); 
     if (blob.ServiceClient.Credentials.NeedsTransformUri) 
     { 
      url = blob.ServiceClient.Credentials.TransformUri(url); 
     } 

     HttpWebRequest req = BlobRequest.Put(new Uri(url), 90, blob.Properties, BlobType.BlockBlob, leaseID, 0); 
     BlobRequest.AddMetadata(req, blob.Metadata); 
     using (var writer = new StreamWriter(req.GetRequestStream())) 
     { 
      byte[] content = new byte[src.Length]; 
      writer.Write(readFully(src)); 
     } 
     blob.ServiceClient.Credentials.SignRequest(req); 
     req.GetResponse().Close(); 
    } 

上面简单的的readFully()方法从流内容到byte []数组。

我一直在使用这个代码一些东西上传到具有有效leaseId任何斑点。直到我转移到Azure SDK的1.4版本,这工作正常。在蔚蓝的SDK的新版本,我得到了req.GetResponse错误400()方法。

可有人请指出是什么在蔚蓝的SDK 1.4多数民众赞成拧这件事有什么改变?

由于 卡皮尔西

回答

0

400代码表示“坏请求”应该有一些附加的错误信息,请参见对http://paulsomers.blogspot.com/2010/10/azure-error-400-bad-request.html一些例子。您应该尝试调试或嗅探网络以获取错误消息。

有在1.4版本下载斑点一些错误,但他们可能不会影响到你。但是,您应该升级到最新版本。

+0

当我用小提琴手,看看反应,它说,错误是由于MD5不匹配。错误文本说明“请求中指定的MD5值与服务器计算的MD5值不匹配”。 现在,这一点是才开始升级到ver1.4后发生。这个问题也出现在我使用UploadFromStream()方法的地方。后来我改变了使用CloudBlob.OpenWrite方法来使用BlobStream。但是,我不知道如何写入我已经签订租约的blobstream。 任何想法? – Kapil

+1

是否有任何理由留在SDK 1.4上? SDK 1.5已经出现了几个星期了。它也有一些与斑点的错误,但它们现在也被修复了。 – knightpfhor