.Net Core Azure Function - Невозможно связать - PullRequest
0 голосов
/ 14 февраля 2019

Я перехожу на .standard к .core, но столкнулся с проблемой:

Microsoft.Azure.WebJobs.Host: Ошибка индексации методом «FunctionName».Microsoft.Azure.WebJobs.Host: Невозможно привязать параметр «MyService» к типу IMyService.Убедитесь, что параметр Type поддерживается привязкой.Если вы используете привязки расширений (например, хранилище Azure, ServiceBus, таймеры и т. Д.), Убедитесь, что вы вызвали метод регистрации расширений в своем коде запуска (например, builder.AddAzureStorage (), builder.AddServiceBus (), builder.AddTimers () и т. д.).

Я использую автозапуск с автозагрузкой для разрешения зависимости

 public sealed class Startup : IExtensionConfigProvider
    {
        private static IContainer container;

        public void Initialize(ExtensionConfigContext context)
        {
            var builder = new ContainerBuilder();

            builder.RegisterType<MyService>().As<IMyToCoreService>().InstancePerDependency();

            container = builder.Build();

            context.AddBindingRule<InjectAttribute>().BindToInput<dynamic>(inject => container.Resolve(inject.Type));
        }
    }

NuGets:

Autofac - 4.9.0
Microsoft.Azure.WebJobs.Extensions.Storage - 3.0.3
Microsoft.NET.Sdk.Functions 1.0.24

И функция:

public static async Task RunAsync([QueueTrigger(ASERVICETOGETANAME)]string blobInformation,
            [Inject(typeof(IMyService))]IMyService myService, 
            ILogger log, CancellationToken cancellationToken)

Я пытаюсь понизить версию ядра nuget и .net, но у меня ничего не получилось, что еще я могу решить проблему зависимости?

EDIT - класс запуска не вызывается.

1 Ответ

0 голосов
/ 18 февраля 2019

Я нашел решение,

установить слепок AzureFunctions.Autofac

добавить [DependencyInjectionConfig(typeof(Startup))] в свой класс функций.

в классе запуска, сделать передачу конструкциистрока:

public Startup(string functionName)
{
    Initialize(functionName);
}

при инициализации:

 public void Initialize(string functionName)
 {
      DependencyInjection.Initialize(builder =>
      {
       // your injections
      }, functionName);

  }
...