具有附加输入数据参数绑定的 Azure 函数
Azure function with additional input data parameter binding
我正在尝试创建一个带有 ServiceBus 队列触发器和附加输入数据的 Azure 函数。
也就是说,函数应该在 blob 更新时触发,将 blob 名称作为输入。我想要一个 Blob 数据作为附加输入。
创建的function.json如下。
{
"bindings": [
{
"name": "myQueueItem",
"type": "serviceBusTrigger",
"direction": "in",
"queueName": "afqueue",
"connection": "CONNECTIONSTRING",
"accessRights": "Listen"
},
{
"type": "blob",
"name": "inputBlob",
"path": "samplecontainer/{name}",
"connection": "AzureWebJobsDashboard",
"direction": "in"
}
],
"disabled": false
}
定义的函数签名如下
public static void Run(string myQueueItem, Stream inputBlob, TraceWriter log){}
这给出了如下错误
Function ($ServiceBusQueueTriggerCSharp1) Error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.ServiceBusQueueTriggerCSharp1'. Microsoft.Azure.WebJobs.Host: No binding parameter exists for 'name'.
而不是参数 {name},如果给出了硬编码值,则该函数可以正常工作。
如何绑定到输入数据变量。
可以从触发器参数模板化输入绑定。因此,name
应该是您的服务总线消息负载的一部分。您可以像这样实现该功能:
public class MyQueueItem
{
public string name { get; set; }
}
public static void Run(MyQueueItem myQueueItem, Stream inputBlob, TraceWriter log)
{}
请注意,此功能的唯一触发器是服务总线消息。该函数不会由 blob 更新触发,除非您的某些其他代码为系统中的每个更新发送带有 blob 名称的服务总线消息。
我正在尝试创建一个带有 ServiceBus 队列触发器和附加输入数据的 Azure 函数。 也就是说,函数应该在 blob 更新时触发,将 blob 名称作为输入。我想要一个 Blob 数据作为附加输入。
创建的function.json如下。
{
"bindings": [
{
"name": "myQueueItem",
"type": "serviceBusTrigger",
"direction": "in",
"queueName": "afqueue",
"connection": "CONNECTIONSTRING",
"accessRights": "Listen"
},
{
"type": "blob",
"name": "inputBlob",
"path": "samplecontainer/{name}",
"connection": "AzureWebJobsDashboard",
"direction": "in"
}
],
"disabled": false
}
定义的函数签名如下
public static void Run(string myQueueItem, Stream inputBlob, TraceWriter log){}
这给出了如下错误
Function ($ServiceBusQueueTriggerCSharp1) Error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.ServiceBusQueueTriggerCSharp1'. Microsoft.Azure.WebJobs.Host: No binding parameter exists for 'name'.
而不是参数 {name},如果给出了硬编码值,则该函数可以正常工作。 如何绑定到输入数据变量。
可以从触发器参数模板化输入绑定。因此,name
应该是您的服务总线消息负载的一部分。您可以像这样实现该功能:
public class MyQueueItem
{
public string name { get; set; }
}
public static void Run(MyQueueItem myQueueItem, Stream inputBlob, TraceWriter log)
{}
请注意,此功能的唯一触发器是服务总线消息。该函数不会由 blob 更新触发,除非您的某些其他代码为系统中的每个更新发送带有 blob 名称的服务总线消息。