So ersetzen Sie die Standard -IjobActivator in der Azure -FunktionC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 So ersetzen Sie die Standard -IjobActivator in der Azure -Funktion

Post by Anonymous »

Ich versuche, meinen eigenen Abhängigkeitsinjektionsbehälter zu verwenden, aber mein IjobActivator /

Code: Select all

IJobActivatorEx
Instanz wird nicht aufgerufen. Wenn ich eine Timerfunktion erstelle und Konstruktorparameter habe, die nur über meinen DI -Container (und nicht über den MS -Container) registriert sind, wird mein JobActivator nicht aufgerufen und kann nicht versuchen, diese Abhängigkeiten zu beheben.

Code: Select all

public static async Task Main(string[] args)
{
var builder = Host
.CreateDefaultBuilder(args)
.ConfigureFunctionsWebApplication()
.ConfigureAppConfiguration(builder =>
{
builder.AddUserSecrets();
})
.ConfigureServices((appBuilder, services) =>
{
var configuration = appBuilder.Configuration;

var connectionString = configuration.GetConnectionString("DefaultConnection");

services.AddSingleton(provider => BuildContainer(provider, connectionString));
services.Replace(ServiceDescriptor.Singleton(svc => new FunctionJobActivator(svc.GetRequiredService())));
services.Replace(ServiceDescriptor.Singleton(svc => new FunctionJobActivator(svc.GetRequiredService())));
});

var host = builder.Build();

await host.RunAsync();
}

public class FunctionJobActivator : IJobActivator, IJobActivatorEx
{
private readonly IMyDiContainer Container;

public FunctionJobActivator(IMyDiContainer container)
{
Container = container;
}

public T CreateInstance()
{
return Container.Build();
}

public T CreateInstance(IFunctionInstanceEx functionInstance)
{
return Container.Build();
}
}

public class Function1
{
private readonly MySpecialSystems Systems;

public Function1(MySpecialSystems systems)
{
Systems = systems;
}

[Function("Function1")]
public void Run([TimerTrigger("*/5 * * * * *", RunOnStartup = true)] TimerInfo myTimer)
{
var test = Systems.ToQuery().Take(10).ExecuteAll();
}
}
Ich habe mir angesehen, wie trocken und autofac dies aber nicht replizieren kann, wie sie es tatsächlich zum Laufen bringen. Keiner von beiden hat sehr gute Beispiele.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post