【问题标题】:Trying to write a file from an Azure WebJob尝试从 Azure WebJob 写入文件
【发布时间】:2018-11-16 03:36:43
【问题描述】:

我的计划是让 WebJob 将新生成的 CSV 发送到一个 blob 存储,在该存储中它由 Azure 函数提取并通过电子邮件发送给一组收件人。

我正在使用CsvWriter 库来生成 CSV。有人告诉我,理想情况下我应该直接上传到 blob 存储容器,但是当 CsvWriter 只能使用我们通过构造函数传递给它的任何 TextWriter 写入文件系统时,我不确定该怎么做.

所以我想要做的是允许 CsvWriter 将文件写入文件系统,然后我会选择它并将其上传到 blob 存储。这里的问题是,我试图让它写入的每个目录都拒绝访问 WebJob。我试过Environment.GetEnvironmentVariable("WEBJOBS_ROOT_PATH") 以及%HOME%d:\site\wwwroot

我需要写入哪个目录?

【问题讨论】:

    标签: azure webjob


    【解决方案1】:

    您可以通过使用StringWriter 完全避免它,您没有使用文件系统:

    using (var stringWriter = new StringWriter())
    using (var csvWriter = new CsvHelper.CsvWriter(stringWriter))
    {
        csvWriter.WriteComment("Test");
        csvWriter.Flush();
    
        var blob = container.GetBlockBlobReference("test.csv");
        await blob.UploadTextAsync(stringWriter.ToString());
    }
    

    【讨论】:

    • 这会起作用,但您需要通过深思熟虑的重试模式来解决网络故障。
    • @Josh 是正确的,但对于涉及网络通信的每个场景都是这种情况,因此,我认为这是一个单独的问题。也不是 azure storage sdk 有 built-in retry policies
    猜你喜欢
    • 2015-05-31
    • 2015-05-04
    • 1970-01-01
    • 2011-04-13
    • 2019-06-23
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多