2011-10-22 108 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