J'essaie de trouver un moyen d'exécuter du code une fois (où j'ai défini des chaînes de connexion, DI et d'autres configurations) lorsque ma fonction Azure démarre. Donc, en ce moment, il appelle une méthode Run comme point d'entrée avec cela dans la fonction générée.json:
"entryPoint": "MyFunctionApp.MessageReceiver.Run"
Cette méthode Run utilise un EventHubTrigger et traite les messages entrants comme suit:
[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}");
}
}
Existe-t-il un moyen d'exécuter du code au démarrage initial avant d'appeler cette méthode Run? Ou existe-t-il un moyen de déclarer un point d'entrée que je peux appeler avant cette classe, puis d'appeler Run () et de passer en quelque sorte le déclencheur? J'essaie de trouver un moyen qui évite les trucs hackers comme la définition de propriétés booléennes pour voir si l'application a démarré.
Vous pouvez implémenter un IExtensionConfigProvider. Ceux-ci seront scannés et exécutés au "démarrage".
using Microsoft.Azure.WebJobs.Host.Config;
namespace MyFunctionApp
{
public class Startup : IExtensionConfigProvider
{
public void Initialize(ExtensionConfigContext context)
{
// Put your intialization code here.
}
}
}
Lors de la conférence Build 2019, Microsoft a publié la fonctionnalité d'avoir une méthode appelable au démarrage de l'application Azure Function. Cela peut être utilisé pour enregistrer des classes DI, créer des connexions DB statiques, etc.
La documentation de ces nouvelles fonctionnalités se trouve sur Azure Function Dependency Injection