Azure Function在启动时运行代码

时间:2017-10-03 21:25:42

标签: azure azure-functions

当我的Azure功能启动时,我试图找到一种方法来运行一些代码(我设置连接字符串,DI和其他配置)。所以现在,它在生成的function.json:

中调用Run方法作为入口点
"entryPoint": "MyFunctionApp.MessageReceiver.Run"

此Run方法使用EventHubTrigger并处理传入的消息,如下所示:

[FunctionName("MessageReceiver")]
        public static void Run([EventHubTrigger("eventHubName", Connection = "eventHubConnection")]string message, TraceWriter log)
        {
            if (string.IsNullOrWhiteSpace(message))
            {
                log.Info($"C# Event Hub trigger function processed a message: {message}");
            }
        }

在调用Run方法之前,有没有办法在初始启动时运行一些代码?或者有没有办法声明我可以在此类之前调用​​的入口点,然后调用Run()并以某种方式传入触发器?我试图找到一种方法,避免像设置布尔属性,以查看应用程序是否已启动等hackish东西。

2 个答案:

答案 0 :(得分:8)

您可以实现IExtensionConfigProvider。这些将被扫描并在" Startup"。

上执行
using Microsoft.Azure.WebJobs.Host.Config;
namespace MyFunctionApp
{
  public class Startup : IExtensionConfigProvider
  {
     public void Initialize(ExtensionConfigContext context)
     {
        // Put your intialization code here.
     }
  }
}

答案 1 :(得分:1)

在2019年Build大会上,Microsoft发布了该功能,以便在Azure Function应用启动时具有可调用的方法。可用于注册DI类,创建静态数据库连接等。

这些新功能的文档可以在Azure Function Dependency Injection

中找到