我是Azure功能的新手,我创建了名为" myfunction"的azure功能,其中包含
1)控制台应用程序(.exe)
代码:
console.writeline("Hello World!");
2)run.ps1(Powershell)
代码:
.\<consoleappname>.exe
3)function.json
代码:
{
"bindings": [
{
"type": "timerTrigger",
"direction": "in",
"schedule": "*/15 * * * * *",
"runOnStartup": false
}
]
}
当我运行此函数时,它会抛出一个错误,如下所示:
Error:
Function ($nmfunction) Error: The binding name is invalid. Please assign a valid name to the binding.
Session Id: 3366132a28a043bab13f1cfa28781c9b
Timestamp: 2017-04-19T14:14:03.962Z
当我将"name":"nmfunction"
添加到json绑定时,它不会在UI中抛出任何错误,但仍然无法运行控制台应用程序,并在日志中抛出错误,
2017-04-19T14:20:25.618 Function started (Id=9bc53d11-1189-43c1-9497-4438713025fa)
2017-04-19T14:20:26.009 .\ConsoleApp1.exe : The term '.\ConsoleApp1.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
at run.ps1: line 1
+ .\ConsoleApp1.exe
+ _________________
+ CategoryInfo : ObjectNotFound: (.\ConsoleApp1.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
2017-04-19T14:20:26.009 Function completed (Failure, Id=9bc53d11-1189-43c1-9497-4438713025fa, Duration=389ms)
2017-04-19T14:20:26.024 Exception while executing function: Functions.nmfunction. Microsoft.Azure.WebJobs.Script: PowerShell script error. System.Management.Automation: The term '.\ConsoleApp1.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
答案 0 :(得分:5)
将绑定名称放到json
文件中,它确实是必需参数。
找不到您的exe
文件,因为您认为当前文件夹是该函数的文件夹,但这不是真的。默认目录为D:\Windows\system32
。您可以通过在.ps1
文件中添加一行来查看:
Write-Output "Current folder: $((Get-Item -Path ".\" -Verbose).FullName)";
一个选项是指定.exe
文件的绝对路径,在您的情况下可能是D:\home\site\wwwroot\nmfunction
。
有一个开放的issue可以提供更直观的方式来访问本地文件。