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

Azure函数中的依赖注入

郦磊
2023-03-14

我有一个时间触发的Azure功能

共有2个答案

司徒锐进
2023-03-14

默认情况下,Azure Functions(C#)定时器触发器使用静态运行方法,在这些方法中,您没有依赖关系,这些函数方法力求纯粹。

public  static  void  Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)

若要在 Azure 函数计时器触发器的运行方法中构造和使用 DI,请尝试使用非静态运行方法。

在Azure Functions定时器触发器中使用DI的几个步骤是:

  1. 在根项目级别

有关详细信息,请参阅 Azure Functions (C#) 计时器触发器依赖关系注入上的 AkshayBabannaavar Medium 博客、MarcRoussy 博客和 SO Thread1 中提供的实用解决方法。

唐煜
2023-03-14

这是我在我们的一个项目中使用的TimerTrigger函数的一个例子,它是一种干净且可扩展的方法。正如你在这里看到的,我正在注入ILoggerOutboxRepositoryITimeProvider

Function.cs

internal class ForwardEventLogMessages
    {
        private readonly ILogger _logger;
        private readonly OutboxRepository _outboxRepository;
        private readonly ITimeProvider _timeProvider;

        public ForwardEventLogMessages(
            ILoggerFactory loggerFactory,
            OutboxRepository outboxRepository,
            ITimeProvider timeProvider)
        {
            _logger = loggerFactory.CreateLogger<ForwardEventLogMessages>();
            _outboxRepository = outboxRepository;
            _timeProvider = timeProvider;
        }

        [Function(nameof(ForwardEventLogMessages))]
        public async Task Run([TimerTrigger("%MessagesSchedule%")] TimerInfo timerInfo)
        {
            _logger.LogInformation("Start forwarding event logs");

            await _outboxRepository.TransferFromLog(
                dateTime: _timeProvider.GetCurrentDateTime());
        }
    }

如果您使用隔离函数或in-proc等,请确保在依赖于框架版本的Program.cs/Startup.cs中注册您的服务。

 类似资料:
  • 我有一个关于 azure 函数 v1 中的依赖注入的新问题。 实际情况: 我有一个azure函数V1,我想在其中引用我的业务服务,而无需重新发明轮子即可使用我的服务。我在Internet上搜索并找到了这篇来自Microsoft的有趣文章。 但是,它似乎只适用于azure函数v2(. net core),因为每当我尝试安装时,我总是收到以下错误: 检测到Microsoft.Azure.WebJobs

  • 我已经成功地将依赖注入用于我自己的自定义服务,如本文所述。 我想要的是在我的定制服务中使用框架作为参数注入Azure函数的绑定器。用作函数参数的示例: 我尝试将Binder作为参数添加到我的服务构造函数并让框架创建我的服务实例,但传入的Binder始终为空。 我的服务构造函数: 注册如下: 有人知道这是否可能吗?如果可能,我做错了什么?

  • 我使用 .NET 5 创建了一个 Azure 函数版本 3,并通过类的构造函数进行依赖关系注入。请参阅下面的虚拟代码: 在类中添加了范围。 程序文件如下所示: 在文件中有这行代码: 问题是当我想运行 Azure 函数时。我有这个警告: 未找到作业函数。试着公开你的作业类和方法。如果您使用的是绑定扩展(例如Azure存储、ServiceBus、定时器等),请确保您在启动代码中调用了扩展的注册方法(例

  • 我一直在尝试为Azure函数实现DI,其中函数由ServiceBus触发(本例中为主题/订阅): 我在以下网站上阅读了有关Azure Functions和DI的信息: https://mcguirev10.com/2018/04/03/service-locator-azure-functions-v2.html https://blog.wille-zone.de/post/azure-func

  • 我正在使用Azure函数v3和DI。我有一个服务,我在启动时设置了一个短暂的生命周期。cs(使用:

  • 我的pom.xml 错误: