2012-07-07 49 views
0

我的存储模拟器上有一个已经存在的页面blob。现在我正在尝试使用WritePages向它写入更多的字节,但它似乎不起作用。 Storage Emulator是否支持该功能,或者我可能会做错什么?现有Blob的Azure WritePages是否适用于存储模拟器

下面是我试图做到这一点。

  var account = CloudStorageAccount.Parse("UseDevelopmentStorage=true"); 

      var blobClient = account.CreateCloudBlobClient(); 

      var blobContainer = blobClient.GetContainerReference("mycontainer"); 
      blobContainer.CreateIfNotExist(); 
      blobContainer.SetPermissions(new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Blob }); 

      var pageBlob = blobContainer.GetPageBlobReference("filepage.txt"); 
      pageBlob.FetchAttributes(); 

      byte[] data = File.ReadAllBytes(@"C:\Temp\moretext.txt"); 
      Array.Resize(ref data, 512); 

      pageBlob.WritePages(new MemoryStream(data), 0); 

感谢

回答

1

我相信你一定是弄错了或者与你的斑点或斑块的可能不是一个是页面斑点。我只是使用下面的代码并验证WritePage API在模拟器上工作正常:

var account = CloudStorageAccount.Parse("UseDevelopmentStorage=true"); 
var blobClient = account.CreateCloudBlobClient(); 

var blobContainer = blobClient.GetContainerReference("mycontainer"); 
blobContainer.CreateIfNotExist(); 
blobContainer.SetPermissions(new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Blob }); 

// Create a Page Blob 
CloudPageBlob pageBlob = blobContainer.GetPageBlobReference("mypageblob"); 
pageBlob.Create(5120); 
// After above line execution, check Azure Emulated Storage and download the PageBlob locally and verify that it is a 5120 size Page blob 

byte[] data = File.ReadAllBytes(@"C:\2012\100text.txt"); // About 300byte text 
Array.Resize(ref data, 512); 

pageBlob.WritePages(new MemoryStream(data), 0); 
// After above line execution, again check Azure Emulated Storage and download the PageBlob locally and verify that it is still a 5120 size Page blob with text in it.