Azure函数-使用CloudBlockBlob而不是Stream的StorageBlob触发器方法签名

Azure函数-使用CloudBlockBlob而不是Stream的StorageBlob触发器方法签名,azure,azure-functions,azure-storage-blobs,Azure,Azure Functions,Azure Storage Blobs,使用Visual Studio 2017创建针对.Net标准2.0的Azure函数 使用添加新Azure函数向导,成功创建具有以下方法签名的blob触发器方法 public static void Run([BlobTrigger("attachments-collection/{name}")] Stream myBlob, string name, ILogger log) 此方法编译后效果良好 但是,我们希望能够访问连接到保存到存储的CloudBlockBlob的元数据,据我所知,使用流

使用Visual Studio 2017创建针对.Net标准2.0的Azure函数

使用添加新Azure函数向导,成功创建具有以下方法签名的blob触发器方法

public static void Run([BlobTrigger("attachments-collection/{name}")] Stream myBlob, string name, ILogger log)
此方法编译后效果良好

但是,我们希望能够访问连接到保存到存储的CloudBlockBlob的元数据,据我所知,使用流是不可能的。该站点上的其他答案,如()建议您可以绑定到CloudBlockBlob而不是流,并以这种方式访问元数据。但建议的解决方案并没有在最新版本的Azure函数中编译

微软的在线文档()似乎也证实了可以将触发器绑定到CloudBlockBlob而不是流,但没有给出语法示例

有人能澄清一下启用Azure Function Blob存储触发器绑定到CloudBlockBlob而不是标准流所需的确切语法吗


谢谢

实际上
CloudBlockBlob
确实有效,我们不需要
FileAccess.ReadWrite
,因为它是BlobTrigger,而不是Blob输入或输出

public static Task Run([BlobTrigger("samples-workitems/{name}")]CloudBlockBlob blob, string name, ILogger log)
无法将BlobTrigger绑定到CloudBlockBlob的更新


有一个问题跟踪,Function SDK在与WindowsAzure.Storge集成时遇到一些问题。因此,只需删除任何
WindowsAzure.Storage
包引用,默认情况下,函数SDK在内部引用v9.3.1

多亏了Jerry Liu的洞察力,这个问题已经解决了

方法: 使用创建新功能应用程序时安装的Azure存储的默认存储包

Microsoft.Azure.WebJobs.Extensions.Storage(3.0.1)

这将安装依赖项

WindowsAzure.Storage(9.3.1)

然后,以下两个方法签名都将正确运行

public static async Task Run([BlobTrigger("samples-workitems/{name}")]Stream myBlob, string name, ILogger log)


是否在Blob属性中将
FileAccess.ReadWrite
设置为参数?根据文件,你必须这样做。以防出现编译错误。你能在这里发布消息吗?我想做的是捕获触发函数的CloudBlockBlob。为此,我认为我需要使用BlobTrigger属性,而不是Blob属性。当我试图在BlobTrigger属性中设置FileAccess.ReadWrite时,出现了一个编译错误“'BlobTriggerAttribute不包含具有两个参数的构造函数”。Jerry-谢谢。我已经试过了,一切都很顺利。但是,当我发布到Azure时,当向存储中添加blob时,该函数永远不会触发。(如果blob是签名中的Stream而不是CloudBlockBlob,则可以正常工作)。@Nick So使用
Stream
作为类型,您可以看到发布后触发的函数吗?如何检查该功能是否已触发?在我这方面,它的工作正如预期的那样。你可以去库杜(
https://.scm.azurewebsites.net/DebugConsole
)并导航到
D:\home\LogFiles\Application\Functions\Host
查看日志。是的,该函数是以流作为类型触发的。我正在使用Azure门户日志流检查函数的输出(FunctionApps->单击函数->在屏幕底部展开“日志”)@Nick我明白了,有时候日志面板可能会与日志流失去连接。你能试着去参观库杜吗(按照我上面的建议)?当然,如果您已经配置了Application Insights,您可以单击函数->单击其
监视器
刀片以检查执行结果。使用kudu,我可以从日志中看到,具有CloudBlockBlob签名的函数未能正确加载,错误如下“2018-12-17T09:11:15.466[错误]索引方法“MyFunctionName.Run”时出错“很高兴您解决了此问题。”。如果我的解释有用的话,你们能接受它让其他人参考吗?如何将CloudBlockBlob复制到流中?
public static async Task Run([BlobTrigger("samples-workitems/{name}")]CloudBlockBlob myBlob, string name, ILogger log)