我的存储模拟器上已有一个已存在的页面blob。现在我正在尝试使用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);
由于
答案 0 :(得分:1)
我相信你一定是犯了一些错误,或者你的blob可能不是一个Page Blob。我刚刚使用以下代码并验证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.