Nenhum erro de construtor sem parâmetros nos WebJobs com .NET Core e Ninject

Estou tentando fazer um pouco de equilíbrio aqui. Atualmente, os WebJobs do Azure não oferecem suporte ao .NET Core.

Com alguma ajuda, criei um aplicativo .NET Core Console e o fiz funcionar como um WebJob. Além disso, estou tentando implementar o Ninject for DI.

O código é compilado corretamente, mas quando eu o executo, recebo o "Nenhum construtor sem parâmetros está definido para este objeto". erro - veja abaixo.

Talvez eu esteja em um território desconhecido, com WebJobs do Azure, .NET Core 2.0 e Ninject, mas alguma idéia do que pode estar causando isso?

BTW, eu tinha o mesmo código exato em execução como um WebJob visando o .NET Framework. Eu precisava migrar para o .NET Core 2.0 porque estou usando bibliotecas de classes que têm como alvo o .NET Core 2.0. Também estou usando o DI nessas bibliotecas de classes e é por isso que estou tentando migrar meu WebJob para o .NET Core 2.0 usando o Ninject.

P.S. Estou usando o Azure.WebJobs 3.0.0 beta2 para converter meu aplicativo de console do .NET Core em WebJobs. Eu também estou usando o Ninject 3.2.2

UPDATE: Aqui está o meu código para o JobActivator

public class BrmJobActivator : IJobActivator
    {
        private readonly IKernel _container;

        public BrmJobActivator(IKernel container)
        {
            _container = container;
        }

        public T CreateInstance<T>()
        {
            return _container.Get<T>();
        }
    }

E aqui está o principal programa:

class Program
    {
        static readonly IKernel Kernel = new StandardKernel();
        static JobHostConfiguration config;

        static void Main(string[] args)
        {
            Environment.SetEnvironmentVariable("AzureWebJobsDashboard", "MySettings");
            Environment.SetEnvironmentVariable("AzureWebJobsStorage", "MySettings");

            BootStrapIoc();

            config = new JobHostConfiguration();

            if (config.IsDevelopment)
            {
                config.UseDevelopmentSettings();
            }

            var host = new JobHost(config);
            host.RunAndBlock();
        }

        private static void BootStrapIoc()
        {
            Kernel.Load(Assembly.GetExecutingAssembly());
            config = new JobHostConfiguration
            {
                JobActivator = new BrmJobActivator(Kernel)
            };
        }
    }

ATUALIZAÇÃO 2: Agora estou recebendo o seguinte erro.

Este erro é lançado na seguinte linha - veja também a segunda imagem.return _container.Get<T>();

ATUALIZAÇÃO 3: aqui está o código emFunctions.cs Arquivo:

public class Functions
{

   private static ISomeService1 _someService1;
   private static ISomeService2 _someService2;

   private static IConfiguration _configuration;


   public Functions(ISomeService1 someService1, ISomeService2 someService2, IConfiguration configuration)
   {
       _someService1 = someService1;
       _someService2 = someService2;
       _configuration = configuration;
    }

    public async Task ProcessQueueMessage([QueueTrigger("my-brm-queue")] QueueMessage message, TextWriter log)
    {

        // Consume service
        _someService1.DoSomething(message);

    }

}

ATUALIZAÇÃO 4: Aqui está o código na classe de ligações do Ninject:

public class NinjectBindings : Ninject.Modules.NinjectModule
{
   IConfiguration Configuration;

   public override void Load()
   {
       // Bind to IConfiguration
       var builder = new ConfigurationBuilder();
       builder.SetBasePath(Directory.GetCurrentDirectory());
       builder.AddJsonFile("appsettings.json");
       Configuration = builder.Build();
       Bind<IConfiguration>().ToMethod(ctx => {
          return Configuration;
       });

       // Create instances of clients
       var docDbClient = new ClassLibrary1.DocumentDbClient(Configuration);
       var tsClient = new ClassLibrary2.TableStorageClient(Configuration);

       // Bind Services
       Bind<ISomeService1>().To<SomeService1>();
       Bind<ISomeService2>().To<SomeService2>();

       // Bind Repositories
       Bind<IRepository1>().To<Repository1>();
       Bind<IRepository2>().To<Repository2>();

   }
}

questionAnswers(0)

yourAnswerToTheQuestion