我正在尝试使用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"
为什么呢?是否无法更改代码中的路径?
答案 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。