[英]binding to a blob in blobtriggered function
我们如何绑定到 blob 内的属性?
我的绑定:
public static async Task Run(
[BlobTrigger("%triggerContainer%/{name}")] Stream myBlob,
[Blob("%triggerContainer%/{name}", Read)] CloudBlockBlob @in,
[Blob("%outputContainer%/{name}", Write)] CloudBlockBlob @out,
string name, ILogger log)
{
我希望能够将 blobtrigger 类型更改为 POCO:
[BlobTrigger("%triggerContainer%/{name}")] MyPoco myBlob
MyPoco
可能是这样的:
public class MyPoco
{
public string id {get;set;}
public string filename {get;set;}
}
在函数中,我希望能够执行以下操作:
var thisId = myBlob.id;
var thisfileName = myBlob.filename;
我们如何使用 POCO 对象绑定到 blob 的实际内容?
根据这个:
JavaScript 和 Java 函数将整个 blob 加载到内存中,如果绑定到字符串、Byte[] 或 POCO,C# 函数会这样做。
首先编写一个 IExtensionConfigProvider 来根据需要注册转换器,
internal class CustomBlobConverterExtensionConfigProvider : IExtensionConfigProvider
{
public void Initialize(ExtensionConfigContext context)
{
context.AddConverter<Stream, MyPoco>(s =>
{
// read and convert
return new MyPoco();
});
context.AddConverter<ApplyConversion<MyPoco, Stream>, object>(p =>
{
MyPoco value = p.Value;
var stream = p.Existing;
TextWriter writer = new StreamWriter(stream);
// write the value to the stream
writer.FlushAsync().GetAwaiter().GetResult();
return null;
});
}
}
然后,您在启动时向主机构建器注册此配置提供程序:
var builder = new HostBuilder()
.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices()
.AddAzureStorage()
.AddExtension<CustomBlobConverterExtensionConfigProvider>();
})
然后将您的 BlobTrigger 函数绑定到 Mypoco:
public void BlobTrigger([BlobTrigger("test")] Mypoco item, ILogger logger)
{
// process item
}
有关更多信息,请查看此文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.