如何获取Azure WebJob的输入blob的名称?

Dil*_*e-O 2 azure azure-webjobs

我正在使用新的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);
}
Run Code Online (Sandbox Code Playgroud)

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

但是,我似乎无法找到TextReader/BlobInput的任何属性,它将为我提供此信息.

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

我该怎么做呢?

Ken*_*ozi 6

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

public static void ProcessImportFile([BlobInput("importjobsdata/{name}")] TextReader input,
                                     string name,
                                     [BlobOutput("importjobslog/log_{name}")] TextWriter writer)
{
    writer.WriteLine(name);
}
Run Code Online (Sandbox Code Playgroud)

  • 以下是我们在WebJobs http://curah.microsoft.com/52143上收集的文章集 (2认同)