【发布时间】:2018-03-23 22:13:15
【问题描述】:
我有一个带有服务总线触发器和 blob 输入绑定的 python 函数。 Blob 的名称与队列消息的内容相匹配。 我的 function.json 文件如下所示:
{
"bindings": [
{
"type": "serviceBusTrigger",
"name": "inputMessage",
"connection": "Omnibus_Validation_Listen_Servicebus",
"queueName": "validation-input-queue",
"accessRights": "listen",
"direction": "in"
},
{
"type": "blob",
"name": "inputBlob",
"path": "baselines/{inputMessage}",
"connection": "Omnibus_Blob_Storage",
"direction": "in"
}
],
"disabled": false
}
而且它的作用就像一个魅力。
我想创建一个具有相同绑定的 C# 函数,但它似乎不起作用。
我使用了相同的function.json 文件。
我有一个project.json 文件:
{
"frameworks": {
"net46": {
"dependencies": {
"WindowsAzure.Storage": "8.5.0"
}
}
}
}
我的run.csx 文件看起来像这样:
public static void Run(string inputMessage, Stream inputBlob, TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {inputMessage}");
}
当我保存/运行函数时,我收到了这个错误:
函数 ($import-baseline) 错误:Microsoft.Azure.WebJobs.Host:错误索引方法“Functions.import-baseline”。 Microsoft.Azure.WebJobs.Host:“inputMessage”不存在绑定参数。
这种绑定python和c#sdk有区别吗?
【问题讨论】:
-
看起来不错。尝试删除 project.json,在这种情况下不需要它。
-
@Mikhail,不工作:-(
-
是的...问题出在
baselines/{inputMessage}语法上。但有趣的是它可以在 python 中工作...... -
是的,我知道 queueTrigger 的语法不同,我试过
baselines/{inputMessage}并且它工作正常。我也试过baselines/{serviceBusTrigger},但没有运气 -
@Thomas 我有一个问题,但与您的问题不同。我只是想知道当您将消息发送到队列时如何传递 {inputMessage} 命名参数。你在哪里有 Python 示例吗?我知道这个 {inputMessage} 应该是队列消息中的命名参数。我使用 Python SDK 插入消息,但找不到任何方法来传递命名参数。
标签: c# python azure-blob-storage azure-functions azure-servicebus-queues