我遵循Microsoft教程来处理基于Azure存储中创建的blob的事件。
事件正在触发,但是要处理图像的事件代码被绕过,因为输入流参数没有被EventGrid事件填充。这应该是通过blob (图像文件)的路径来处理。
public static async Task Run(
[EventGridTrigger]EventGridEvent eventGridEvent,
[Blob("{data.url}", FileAccess.Read)] Stream input,
ILogger log)
{
try
{
log.LogInformation("Entered Thumbnail Function ..");
if (input != null)
{ //doesn't get to here ..每次事件触发时的日志是
2018-11-15T05:33:41.096 [Information] Executing 'Thumbnail' (Reason='EventGrid trigger fired at 2018-11-15T05:33:41.0781270+00:00' ..
2018-11-15T05:33:41.096 [Information] Entered Thumbnail Function
2018-11-15T05:33:41.096 [Information] Executed 'Thumbnail' (Succeeded,
2018-11-15T05:33:41.096 [Information] Executing 'Thumbnail' (Reason='EventGrid trigger fired at 2018-11-15T05:33:41.0781270+00:00',
2018-11-15T05:33:41.096 [Information] Entered Thumbnail Function
2018-11-15T05:33:41.096 [Information] Executed 'Thumbnail' (Succeeded,发布于 2018-11-15 08:12:19
本教程适用于v1 c#脚本函数,因为您可以看到它在讨论函数代码时提到了csx文件。但是现在项目链接指向了v2预编译代码,当我们严格遵循本教程时,代码的更改可能会导致问题。
让我们用两个步骤修复不一致。
myContainerName中的Blob中创建的容器thumbnails设置一个应用程序设置part1。
但是在我们的代码中,我们可以看到它用AzureWebJobsStorage连接到AzureWebJobsStorage,并希望从应用程序设置THUMBNAIL_CONTAINER_NAME中获得容器名。
快速修复方法是替换AzureWebJobsStorage和THUMBNAIL_CONTAINER_NAME,并为thumbnailWidth设置一个常量。
私有静态只读字符串BLOB_STORAGE_CONNECTION_STRING =BLOB_STORAGE_CONNECTION_STRING.var thumbnailWidth = 100;var thumbContainerName =thumbnailWidth
当然,您可以选择在Azure门户的应用程序设置中添加THUMBNAIL_WIDTH。重新发布,一切都应该正常工作。
发布于 2018-11-15 06:25:41
数据永远不会被传递进来。Event事件将只传递元数据,元数据将包括可以用于检索内容的blob (如果需要)。
发布于 2021-08-08 19:55:39
除了当前接受的答案(https://stackoverflow.com/a/53314953/816663)之外,如果您的函数应用程序在存储帐户上具有适当的Blob权限的系统或用户分配的标识,您也可以不添加Connection参数而使其工作。
https://stackoverflow.com/questions/53313094
复制相似问题