Как заменить по умолчанию iJobactivator в функции AzureC#

Место общения программистов C#
Ответить
Anonymous
 Как заменить по умолчанию iJobactivator в функции Azure

Сообщение Anonymous »

Я пытаюсь использовать свой собственный контейнер для инъекции зависимости, но мой ijobactivator /

Код: Выделить всё

IJobActivatorEx
экземпляр не вызывается. Когда я создаю функцию таймера и имею параметры конструктора, которые зарегистрированы только через мой контейнер DI (а не контейнер MS). Мой JobActivator не вызывается и не может попытаться разрешить эти зависимости.

Код: Выделить всё

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();
}
}
Я посмотрел, как Dryioc и Autofac делают это, но я не могу повторить, как они на самом деле заставляют его работать. Ни у кого из них не очень хорошие примеры.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... e-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»