Я делаю переход с .standard на .core, но столкнулся с проблемой:
Microsoft.Azure.WebJobs.Host: Error indexing method 'FunctionName'. Microsoft.Azure.WebJobs.Host: Cannot bind parameter 'MyService' to type IMyService. Make sure the parameter Type is supported by the binding. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
Я использую запуск с autofac для устранения зависимости
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, но у меня ничего не получилось, что еще я могу сделать, чтобы решить проблему с зависимостями?
РЕДАКТИРОВАТЬ. Класс Startup не вызывается.
@MurrayFoxcroft Я сделал :/, я думаю, что это связано с версией sdk.funtions, потому что QueueTrigger был перенесен в отдельную библиотеку
Вам нужно обновить по всем направлениям.





Я нашел решение,
установить самородок AzureFunctions.Autofac
добавьте [DependencyInjectionConfig(typeof(Startup))] в свой класс функций.
в классе запуска создайте конструкцию, передающую строку:
public Startup(string functionName)
{
Initialize(functionName);
}
при инициализации:
public void Initialize(string functionName)
{
DependencyInjection.Initialize(builder =>
{
// your injections
}, functionName);
}
У меня было много проблем с этим, создайте новое пустое приложение основных функций .net и скопируйте свой код. На первый взгляд это кажется утомительным, но, похоже, в конечном итоге все заканчивается быстрее.