繁体   English   中英

如何在 Azure Function (.NET6) 中读取和写入相同的 Blob 文件

[英]How to Read & Write to same Blob file in Azure Function (.NET6)

在 Azure Function V1 (.NET4) 下面的代码运行良好

[FunctionName("run")]
public static HttpResponseMessage run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage request,
[Blob("sample.txt", FileAccess.Read)] Stream readStream,
[Blob("sample.txt", FileAccess.Write)] Stream writeStream) 
{
   //read & write to sample.txt stream works ok
}

但是在 Azure Function V4 (.NET 6) 中,抛出只能访问 1 stream 的错误

[FunctionName("run")]
public static HttpResponseMessage run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage request,
[Blob("sample.txt", FileAccess.Read)] Stream readStream,
[Blob("sample.txt", FileAccess.Write)] Stream writeStream) 
{
   //can ONLY use read stream or write stream, can't use both

}

如何读取和写入 Azure Function (.NET6) 中的同一个 Blob 文件?

注意:问题只出现在 Azure 不在本地调试

从我们这边重现后,即使我们添加了 2 个流,它也能正常工作。 确保您的环境是最新的。

[FunctionName("Function1")]
        public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage req,
        [Blob("samples-workitems/samples.txt", FileAccess.Read)] Stream readStream,
        [Blob("samples-workitems/samples.txt", FileAccess.Write)] Stream writeStream)
        {         
            Console.WriteLine("Blob length is "+ readStream.Length);

            string sample = "Sample Text";

            byte[] bytes = Encoding.ASCII.GetBytes(sample);
            writeStream.Write(bytes, 0, bytes.Length);

        }

考虑这是我的初始文本文件

在此处输入图像描述

结果:

在此处输入图像描述

后触发后的文本文件

在此处输入图像描述

在 Azure Function V4 (.NET 6) 中工作的最终解决方案是BlobClient

使用BlobClient读取/写入 blob 存储中的文件的代码

[FunctionName("Function1")]
public static async Task<IActionResult> Function1(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage incomingRequest,
[Blob("container-name/file-name.xml", FileAccess.ReadWrite)] BlobClient fileBlobClient)
    { ... }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM