【问题标题】:Unable to Append to Append Blob in Azure无法在 Azure 中追加到追加 Blob
【发布时间】:2018-07-11 13:45:33
【问题描述】:

我正在尝试将教科书追加到 azure 中的追加 blob。

首先我创建一个 blob 容器。我知道此操作成功,因为我可以在存储资源管理器中看到容器。

接下来我创建 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)。

有什么办法可以找出问题所在吗?

谢谢!

【问题讨论】:

    标签: c# azure azure-blob-storage


    【解决方案1】:

    只需在sr.WriteLine(message); 之后添加sr.Flush(); 即可使缓冲数据立即写入底层流。

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

    我们需要使用StreamWriter的构造参数MemoryStream,所以不能使用Close,否则会出现Cannot access a closed Stream这样的异常。

    【讨论】:

      猜你喜欢
      • 2018-08-17
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多