我正在使用Visual Studio 2017在本地Azure函数v1中开发服务总线触发器。我想从官方文档中测试example,而不必在服务总线中添加消息。所以我通过Postman在端点POST http://localhost:7071/admin/functions/ServiceBusQueueTriggerCSharp上使用正文{ "input": "foo" }
触发它。
此操作因脚本主机错误而失败:执行函数时出现异常:ServiceBusQueueTriggerCSharp。 Microsoft.Azure.WebJobs.Host:发生了一个或多个错误。异常绑定参数'deliveryCount'。 Microsoft.Azure.WebJobs.Host:绑定数据不包含预期值'deliveryCount'。
我尝试删除deliveryCount
参数,但随后在enqueueTimeUtc
处失败。删除它也有效。有没有办法保留这些参数并在本地测试函数?
我理解这两个参数在通过HTTP触发时没有多大意义,但它们可以被赋予默认值。 messageId
具有非零值。
参考示例:
[FunctionName("ServiceBusQueueTriggerCSharp")]
public static void Run(
[ServiceBusTrigger("myqueue", AccessRights.Manage, Connection = "ServiceBusConnection")]
string myQueueItem,
Int32 deliveryCount, // this fails
DateTime enqueuedTimeUtc, // this fails too
string messageId,
TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
log.Info($"EnqueuedTimeUtc={enqueuedTimeUtc}");
log.Info($"DeliveryCount={deliveryCount}");
log.Info($"MessageId={messageId}");
}
答案 0 :(得分:1)
截至目前,如果您希望能够使用这些额外的元数据属性,则需要使用真实的服务总线消息。
理论上,管理端点可能足够智能,允许您将其他绑定数据(例如此情况下的deliveryCount)作为查询参数传递。我提交了以下功能请求来跟踪: https://github.com/Azure/azure-functions-host/issues/2955