我要从.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类。
答案 0 :(得分:0)
我找到了解决方法,
安装块public class MyClass
{
public int FileId { get; set; }
}
在函数类中添加AzureFunctions.Autofac
。
在启动类上,构造一个传递字符串的结构:
[DependencyInjectionConfig(typeof(Startup))]
关于初始化:
public Startup(string functionName)
{
Initialize(functionName);
}