Azure函数C#未生成的输入绑定是function.json

时间:2017-08-30 16:18:36

标签: c# azure azure-functions

我正在使用具有以下签名的QueueTrigger:

public static void Run([QueueTrigger("tester")]string myQueueItem,[Blob("local/{queueTrigger}")]ICloudBlob myBlob,TraceWriter log)

生成的function.json中的绑定是:

    "bindings": [
    {
      "type": "queueTrigger",
      "queueName": "tester",
      "connection": "AzureWebJobsStorage",
      "name": "myQueueItem"
    }
  ],

这不起作用,因为它不会将适当的blob绑定为in绑定。如果我手动编辑function.json,它应该正确绑定:

"bindings": [
{
  "type": "queueTrigger",
  "queueName": "tester",
  "connection": "AzureWebJobsStorage",
  "name": "myQueueItem"
},
{
  "name": "myBlob",
  "type": "blob",
  "path": "local/{queueTrigger}",
  "direction": "in",
  "connection": "AzureWebJobsStorage"
}],

我的问题是如何在C#代码中指明输入绑定,以便正确生成function.json?我知道对于输出绑定,你可以使用out参数来装饰它,但是为什么呢?这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

这是通过Function VS工具编写的吗?这只会生成一个描述触发器[1]的function.json。其他绑定直接从C#属性中读取,就像使用WebJobs SDK一样。

该工具自动生成的function.json还应具有“configurationSource”:“attributes”属性。这就是函数运行时从属性中读取绑定的原因。 如果缺少,那么可能意味着您有预发布工具并需要更新CLI和Microsoft.NET.Sdk.Functions包。

您能确认属性已设定吗?

此外,您的“运行”方法应该有一个[FunctionName]属性。

[1]这已从工具的预发布版本更改,请参阅https://github.com/Azure/azure-webjobs-sdk-script/issues/1508