.Net Core Azure功能-无法绑定

时间:2019-02-14 13:52:44

标签: c# asp.net-core dependency-injection .net-core azure-functions

我要从.standard迁移到.core,但是遇到一个问题:

  

Microsoft.Azure.WebJobs.Host:错误索引方法   'FunctionName'。 Microsoft.Azure.WebJobs.Host:无法绑定   要输入的参数“ MyService”   IMyService。确保支持参数类型   通过绑定。如果您使用的是绑定扩展(例如,Azure   存储,ServiceBus,计时器等),请确保已将   您的启动代码中扩展名的注册方法(例如   builder.AddAzureStorage(),builder.AddServiceBus(),   builder.AddTimers()等)。

我正在使用带有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 core的版本,但是没有成功,还能解决依赖问题吗?

编辑-不调用Startup类。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法,

安装块public class MyClass { public int FileId { get; set; } }

在函数类中添加AzureFunctions.Autofac

在启动类上,构造一个传递字符串的结构:

[DependencyInjectionConfig(typeof(Startup))]

关于初始化:

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