我正在尝试将教科书追加到天蓝色的追加blob中。
首先,我创建一个Blob容器。我知道此操作成功了,因为我可以在Storage Explorer中看到该容器。
接下来,我创建blob。我知道此操作成功,因为我可以在存储资源管理器中看到blob。
最后,我尝试使用以下代码附加到blob。
var csa = CloudStorageAccount.Parse(BLOB_CONNECTION_STRING);
var client = csa.CreateCloudBlobClient();
var containerRefernece = client.GetContainerReference(CONTAINER_NAME);
var blobrefernce = containerRefernece.GetAppendBlobReference(BLOB_NAME);
var ms = new MemoryStream();
var sr = new StreamWriter(ms);
sr.WriteLine(message);
ms.Seek(0, SeekOrigin.Begin);
await blobrefernce.AppendBlockAsync(ms);
无论我做什么,都会遇到以下异常。
windowsAzure.Storage StorageException: The value for one of the HTTP headers is not in the correct format.
我对如何进行有点茫然。我什至无法从异常中确定问题出在哪些参数。连接字符串直接从azure门户复制。注意我正在使用WindowsAzure.Storage NuGet软件包的最新版本(9.3.0)。
有什么主意可以找出问题所在吗?
谢谢!
答案 0 :(得分:2)
只需在sr.Flush();
之后添加sr.WriteLine(message);
,即可将缓冲的数据立即写入基础流。
AutoFlush
中的 StreamWriter
在默认情况下为false,因此在我们使用Flush或Close之前,缓冲的数据不会写入目标。
我们需要使用MemoryStream(它是StreamWriter的构造参数),所以我们不能使用Close,否则会得到类似Cannot access a closed Stream
的异常。