为非常简单的手动Azure功能定义返回

时间:2018-02-27 20:30:39

标签: azure azure-functions

我有一个执行此操作的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(已接受),但不会输出该函数的返回值。

我的问题是,基本上,为什么我没有得到任何输出;但是,我想我的第一个问题应该是(是),应该我得到输出;如果是的话,我的绑定有什么问题?

这是一个稍微复杂的函数的简化版本,我打算将其用作逻辑应用程序中的条件(因此我需要返回值)。

1 个答案:

答案 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响应。