我有一个执行此操作的Azure功能:
public static int Run(int myvalue, TraceWriter log)
{
log.Info($"C# manually triggered function called with input: {myvalue}");
if (myvalue == 1) return 1;
return (myvalue + 1);
}
我直接在门户网站创建了它;但是,我对绑定的尝试可能是错误的:
{
"bindings": [
{
"type": "manualTrigger",
"direction": "in",
"name": "myvalue"
},
{
"type": "int",
"direction": "out",
"name": "$return"
}
],
"disabled": false
}
当我在门户网站内运行时,它会给我一个202(已接受),但不会输出该函数的返回值。
我的问题是,基本上,为什么我没有得到任何输出;但是,我想我的第一个问题应该是(是),应该我得到输出;如果是的话,我的绑定有什么问题?
这是一个稍微复杂的函数的简化版本,我打算将其用作逻辑应用程序中的条件(因此我需要返回值)。
答案 0 :(得分:3)
int
不是手动触发的受支持类型。你应该在日志中看到这样的错误:
[错误] Microsoft.Azure.WebJobs.Host:错误索引方法'Functions.ManualTriggerCSharp1'。 Microsoft.Azure.WebJobs.Script:无法绑定ManualTriggerAttribute以键入“System.Int32”。
如果您将参数类型更改为string
,则日志记录应该有效:
public static void Run(string myvalue, TraceWriter log)
{
log.Info($"C# manually triggered function called with input: {myvalue}");
}
现在,从手动触发返回任何内容都没有意义。您可以继续返回int
,但会被忽略。但删除第二个绑定:
{
"bindings": [
{
"type": "manualTrigger",
"direction": "in",
"name": "myvalue"
}
],
"disabled": false
}
要返回值,您可能需要切换到HTTP触发器,从HTTP请求中读取数据并返回HTTP响应。