无法附加到Azure中的附加Blob

时间:2018-07-11 04:37:58

标签: c# azure azure-storage-blobs

我正在尝试将教科书追加到天蓝色的追加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)。

有什么主意可以找出问题所在吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

只需在sr.Flush();之后添加sr.WriteLine(message);,即可将缓冲的数据立即写入基础流。

AutoFlush中的

StreamWriter在默认情况下为false,因此在我们使用Flush或Close之前,缓冲的数据不会写入目标。

我们需要使用MemoryStream(它是StreamWriter的构造参数),所以我们不能使用Close,否则会得到类似Cannot access a closed Stream的异常。