Azure Functions错误 - 无法将参数绑定到String

时间:2017-07-28 10:42:54

标签: c# azure azure-functions

我正在尝试使用Azure功能将文件保存到FTP。 json是这样的:

{
      "type": "apiHubFile",
      "name": "outputFile",
      "path": "{folder}/ps-{DateTime}.txt",
      "connection": "ftp_FTP",
      "direction": "out"
}

功能代码是:

public static void Run(string myEventHubMessage, TraceWriter log, string folder, out string outputFile)
{
    var model = JsonConvert.DeserializeObject<PalmSenseMeasurementInput>(myEventHubMessage);

    folder = model.FtpFolderName;

    outputFile = $"{model.Date.ToString("dd.MM.yyyy hh:mm:ss")};{model.Concentration};{model.Temperature};{model.ErrorMessage}";


    log.Info($"C# Event Hub trigger Save-to-ftp function saved to FTP: {myEventHubMessage}");

}

我得到的错误是:

  

函数($ SaveToFtp)错误:Microsoft.Azure.WebJobs.Host:错误   索引方法&#39; Functions.SaveToFtp&#39;。 Microsoft.Azure.WebJobs.Host:   无法绑定参数&#39;文件夹&#39;键入String。确保参数   绑定支持类型。如果您正在使用绑定扩展程序   (例如ServiceBus,计时器等)确保你已经打电话给   您的启动代码中的扩展名的注册方法(例如   config.UseServiceBus(),config.UseTimers()等。)。

如果我用文件夹名称替换{folder},它可以工作:

"path": "psm/ps-{DateTime}.txt"

为什么呢?是否无法更改代码中的路径?

1 个答案:

答案 0 :(得分:1)

folder是函数的输入参数,不会影响输出绑定。

{folder}语法的含义是运行时将尝试在输入项中查找folder属性,并绑定到该属性。

请尝试以下方法:

public static void Run(PalmSenseMeasurementInput model, out string outputFile)
{
    outputFile = $"{model.Date.ToString("dd.MM.yyyy hh:mm:ss")};{model.Concentration};{model.Temperature};{model.ErrorMessage}";
}

function.json

{
      "type": "apiHubFile",
      "name": "outputFile",
      "path": "{FtpFolderName}/ps-{DateTime}.txt",
      "connection": "ftp_FTP",
      "direction": "out"
}

您可以在“绑定表达式和模式”和“绑定到绑定表达式中的自定义输入属性”部分中阅读更多here