2

我正在使用新的 Azure WebJobs 功能,并且当新文件进入 blob 之一时有一个简单的触发器:

public static void ProcessImportFile([BlobInput("importjobsdata/{name}")] TextReader input,
                                    [BlobOutput("importjobslog/log_{name}")] TextWriter writer)
{
    writer.WriteLine("Starting import file process...");

    var result = InputData(input, writer);

    var status = result == 0 ? "SUCCESS" : "FAIL";
    var message = result == 0
        ? "Import success."
        : "Import fail. " + result + " records failed to import. Check logs for details.";

    writer.WriteLine(message);
}

我想做的是获取已上传文件的名称(即数据注释中的 {name} 属性),以便我可以将该信息写入写入器(日志)以进行诊断。

但是,我似乎找不到任何可以为我提供此信息的 TextReader/BlobInput 属性。

我做了一点挖掘,看起来 TextReader 的 BaseStream 属性是一个 Microsoft.WindowsAzure.Jobs.WatchableStream 对象。我不确定这是否有助于追踪名称。

我该如何获得它?

4

1 回答 1

6

捕获的值name也将传递给具有该名称的参数。所以你应该能够做到这一点:

public static void ProcessImportFile([BlobInput("importjobsdata/{name}")] TextReader input,
                                     string name,
                                     [BlobOutput("importjobslog/log_{name}")] TextWriter writer)
{
    writer.WriteLine(name);
}
于 2014-04-04T23:13:21.343 回答