'How to Read & Write to same Blob file in Azure Function (.NET6)

In Azure Function V1 (.NET4) code below worked fine

[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
}

But in Azure Function V4 (.NET 6), throws error that only 1 stream can be accessed

[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

}

How to Read & Write to same Blob file in Azure Function (.NET6)?

Note: issue only appears in Azure not in local debugging



Solution 1:[1]

Final solution that worked in Azure Function V4 (.NET 6) is BlobClient

Code to use BlobClient to read/write files in blob storage

[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)
    { ... }

Solution 2:[2]

After reproducing from our end, This was working even though we have added 2 streams. Make sure your environment is up to date.

[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);

        }

Considering this to be my initial text file

enter image description here

RESULT:

enter image description here

Text file after post-trigger

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 user160357
Solution 2