繁体   English   中英

Azure Function TextWriter stream 附加到文件而不是覆盖 - 我需要用 using 语句包装吗?

[英]Azure Function TextWriter stream is appending to file and not overwriting - do I need to wrap in a using statement?

我有一个 Azure 存储帐户,我可以在其中上传文件。 文件上传发生在 Azure Function(Blob 触发器)中。

一切都按预期工作,但是,如果我触发 Function 三次,该文件将附加前三个会话数据。 我认为我没有正确处理 stream。

 public void Run(
        [BlobTrigger("raw/{name}")] Stream input,
        [Blob("data/{name}", FileAccess.Write)] TextWriter output,
        string name,
        ILogger log)

然后我写信给 output 如下:

output.WriteLine(data);

我不确定如何将其包装在 using 语句中。

谁能建议?

这是对我有用的代码,每次我触发 function 文件都会被当前触发的数据覆盖。

using System;
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace FunctionAppTW
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("raw/{name}", Connection = "")] Stream input, [Blob("data/{name}", FileAccess.Write)] TextWriter output, string name, ILogger log)
        {

            StreamReader reader = new StreamReader(input);
            string data = reader.ReadToEnd();

            output.WriteLine(data);
        }
    }
}

结果:

在此处输入图像描述

在此处输入图像描述

我自己之前遇到过这个问题。 我不记得了,但我在我的函数应用程序中使用了依赖注入。 我的实现代码使 stream 保持活动状态,并在仅使用 output.writeline() 语句时聚合以前的运行。

在每次方法调用之前,我都必须关闭并处理之前的 session。

暂无
暂无

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

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