当前位置: 首页 > 知识库问答 >
问题:

Azure WebJob BlobTrigger-输出Blob使触发器不触发

仉英朗
2023-03-14

当我的函数方法签名如下时,我有一个成功触发的v3 WebJob:

    public static void ProcessQueueMessage(
            [BlobTrigger("process/{name}", Connection = "storage-connection")] Stream blob,
            ILogger log
        )

然而,当我添加一个输出blob时,BlobTrigger永远不会触发。

public static void ProcessQueueMessage(
            [BlobTrigger("process/{name}", Connection = "storage-connection")] Stream blob,
            [Blob("output/{name}", FileAccess.Write, Connection = "storage-connection")] Stream processedBlob,
            ILogger log
        )

下面的文档如下:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob#output

共有1个答案

武琛
2023-03-14

如果要使用 Azure WebJob BlobTrigger 并且还使用输出绑定,可以按照我的步骤操作。

在我这边,它工作得很好。

1.创建控制台应用程序并安装所需的一切。你可以遵循这个文件。这将告诉您如何使用WebJob SDK。

这是我的代码:

功能.cs:

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using System.IO;

namespace ConsoleApp1
{
    public class Functions
    {
        public static void ProcessQueueMessage(
            [BlobTrigger("images/{name}")]Stream myBlob, 
            [Blob("form/{name}", FileAccess.Write)] Stream imageSmall, 
            string name, 
            ILogger log
            )
        {
            log.LogInformation("webjobs blob trigger works!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        }
    }
}

Program.cs:

using System;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new HostBuilder();
            builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorage();
                b.AddAzureStorageCoreServices();
            });
            builder.ConfigureLogging((context, b) =>
            {
                b.AddConsole();
            });

            builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();
                b.AddAzureStorage();
            });

            var host = builder.Build();
            using (host)
            {
                host.Run();
            }
        }
    }
}

appsettings.json:

{  
  "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=bowmanimagestorage02;AccountKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxSAHfYi1d2yc+BU3NG9hkbGEPU/lJP5wtqYZ3pdDq1lGEkdUx7w==;EndpointSuffix=core.windows.net"
}

你可以发现我已经在blobtrigger中添加了输出绑定,只需按照你给出的文档。我上传一个镜像到镜像容器和控制台显示登录信息,镜像也上传到表单容器。

事情在我这边工作,如果你有更多问题,请显示更多细节。我希望我的答案能给你一些帮助。

 类似资料:
  • 如果你使用blob存储触发器阅读Azure WebJobs上的留档,它们会提到这不是很可靠: WebJobs SDK扫描日志文件以查看新的或更改的blob。这个过程不是实时的;在创建blob后的几分钟或更长时间内,函数可能不会被触发。此外,存储日志是在“尽力而为”的基础上创建的;无法保证所有事件都将被捕获。在某些情况下,日志可能会丢失。如果您的应用程序无法接受blob触发器的速度和可靠性限制,建议

  • 我的存储容器中大约有35k blob文件。其中一些是在部署功能之前的旧版本,一些是在部署功能应用之后的旧版本。 这是我的函数签名 我的理解是,这个功能将不断处理所有新旧文件。但是当我在Azure portal上看到那个日志时,这就是发生的事情。 < Li > 2020-01-21t 09:02:56.103[信息]已执行' watch-portal-blob '(成功,Id = 37 CFAF 5

  • 我创建了一个Azure blob触发器函数来压缩一个blob中的图像,并将压缩后的图像复制到另一个blob中。在第一次运行时,它为现有blob触发,但当我删除输出blob存储并重新创建它时,正常工作的应用程序不会为现有blob触发。 是否有任何方法可以为现有blob触发此函数?

  • 我是Azure Function应用程序中blob触发器的新手,需要一些帮助。我正在努力寻找有关如何重命名触发该函数的blob的资源。 我有一个函数应用程序,当一个新的blob被上传到容器时触发,文件被处理,我需要一种方法来将其“标记”为已处理,因此我想重命名blob。 这是我的职责: 我该如何重命名该文件?在这种情况下有可能吗?

  • 未找到作业函数。试着公开你的作业类和方法。如果您使用的是绑定扩展(例如Azure存储、ServiceBus、定时器等),请确保在启动代码中调用了扩展的注册方法(例如builder.AddAzureStorage()、builder)。AddServiceBus(),生成器。AddTimers()等)。 当我们将.netframework从4.7升级到.netcore 3.0时,问题开始出现

  • 我使用blob触发器读取blob内容,作为pandas DF进行处理,并将blob附加到我使用的Azure SQL server。 blob触发器没有按预期工作,因此我将main函数中的所有代码都定义为: 但是,我得到了以下错误: 有人可以帮助我找到此问题的原因吗? function.json的配置如下: