0

ストレージ エミュレーターに既存のページ 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);

ありがとう

4

1 に答える 1

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.
于 2012-07-09T20:36:52.843 に答える