我有C#Azure函数。
[FunctionName("MyFunction")]
public static void Run(
[QueueTrigger("my-queue")]MyClass item
, [Blob("report-streams/{name}", FileAccess.Write)] Stream reportStream)
{
但是我得到了错误:
Run: Microsoft.Azure.WebJobs.Host: Error indexing method 'MyFunction.Run'. Microsoft.Azure.WebJobs.Host: No binding parameter exists for 'name'.
理想情况下,我想将名称绑定到属性item.Id,但找不到解决方案。
答案 0 :(得分:0)
我认为这不可能直接实现。但是,您应该能够在运行时使用绑定来实现。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#single-attribute-example
string id = item.id;// retrieve here from your item
using (var writer = binder.Bind<TextWriter>(new BlobAttribute(
$"report-streams/{id}", FileAccess.Write)))
{
writer.Write("Hello World!");
};
答案 1 :(得分:0)
Azure函数支持将Trigger metadata绑定为C#中的输入参数。并且属性包括ID。因此,只需在输入路径中将ID与{Id}绑定,即可使用。以下是我的测试。
public static void Run(
[QueueTrigger("myqueue", Connection = "AzureWebJobsStorage")]string myQueueItem,
[Blob("blobcontainer/{Id}", FileAccess.Write)]Stream reportStream,
ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
}
这是具有ID的队列。
这是功能控制台输出和blob容器输出。
希望这可以为您提供帮助。