Регистрация зависимостей в AWS Lambda для «Microsoft.Extensions.DependencyInjection.IServiceProviderFactory» - PullRequest
0 голосов
/ 24 декабря 2018

В прокси-приложении ASP.NET Core Lambda Serverless встроен автофак в конвейер, который прекрасно работает при работе через точку локализации, но после его развертывания в AWS lambda я получаю следующую ошибку, хотя я сделал явную регистрациюдля типа

ОШИБКА, ПОКАЗАННАЯ ФУНКЦИЕЙ ИСПЫТАНИЙ LAMBDA, составляет

Пн. 24 дек. 06:42:42 UTC 2018: не удалось выполнить лямбду со статусом 200 из-за ошибки функции клиента: Возникла исключительная ситуация при вызове конструктора для типа «API.LambdaEntryPoint».Проверьте внутреннее исключение для более подробной информации. Идентификатор лямбда-запроса: 1c86cf63-0747-11e9-b3dc-fd7a21520e5f Пн. 24 декабря 06:42:42 UTC 2018: Метод завершен со статусом: 502

Возможно, яотсутствуют некоторые мелочи.

Я уже зарегистрировал компонент явно, но без помощи.

    public void ConfigureContainer(ContainerBuilder builder)
    {

        builder.RegisterType<AutofacServiceProviderFactory>().As<IServiceProviderFactory<ContainerBuilder>>();

        DependencyContainer.Initialize(builder);
    }



[Injectable]
public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
{

    public LambdaEntryPoint() : base(AspNetCoreStartupMode.Constructor)
    {

    }
    /// <summary>
    /// The builder has configuration, logging and Amazon API Gateway already configured. The startup class
    /// needs to be configured in this method using the UseStartup<>() method.
    /// </summary>
    /// <param name="builder"></param>
    protected override void Init(IWebHostBuilder builder)
    {
        builder
            .UseStartup<Startup>();
    }

    public override Task<APIGatewayProxyResponse> FunctionHandlerAsync(APIGatewayProxyRequest request, ILambdaContext lambdaContext)
    {
        //lambdaContext
        //request.
        Console.WriteLine("Function handler" + request.Path);

        return base.FunctionHandlerAsync(request, lambdaContext);
    }
}

Поскольку он работает на локальном компьютере, я должен иметь возможность инициализировать функцию LambdaEntryPoint.(показано выше)

...