我有一个带有servicebus触发器和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之间有什么区别吗?
答案 0 :(得分:0)
如果我在function.json文件中将输入blob路径与baselines\{serviceBusTrigger}
或baselines\{inputMessage}
绑定,我也可以在我身边重现它。
我不确定当前是否支持集成输入servicebus队列和输入blob。我们可以将我们的feedback提供给Azure功能团队。
如果Azure 存储队列可以接受,我们可以使用Azure存储队列触发器来执行此操作。我测试它在我身边,它工作正常。
run.csx文件
using System;
using System.Threading.Tasks;
public static void Run(string myQueueItem, Stream inputBlob, TraceWriter log)
{
log.Info($"C# storage queue trigger function processed message: {myQueueItem}");
StreamReader reader = new StreamReader(inputBlob);
string text = reader.ReadToEnd();
log.Info(text);
}
<强> function.json 强>
{
"bindings": [
{
"type": "blob",
"name": "inputBlob",
"path": "incontainer/{queueTrigger}",
"connection": "testweblog_STORAGE",
"direction": "in"
},
{
"type": "queueTrigger",
"name": "myQueueItem",
"queueName": "myqueue",
"connection": "testweblog_STORAGE",
"direction": "in"
}
],
"disabled": false
}