繁体   English   中英

autofac模块解析配置WebApi N层

[英]autofac module resolve config WebApi N Layer

我使用的是简单的autofac,但是在程序集的模块扫描选项中,它在Web Api中引发了运行时异常。

Global.asax.cs中的简单工作代码

var builder = new ContainerBuilder();
var config = GlobalConfiguration.Configuration;
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterWebApiFilterProvider(config);
builder.RegisterType<ReportRepository>().As<IReportRepository>();
builder.RegisterType<UserRepository>().As<IUserRepository>();
....
var container = builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

从不同层的装配进行模块扫描

public class RepositoryModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        //var assembly = AppDomain.CurrentDomain.GetAssemblies();
        var assembly = System.Reflection.Assembly.GetExecutingAssembly();

        builder.RegisterAssemblyTypes(assembly)
                .Where(a => a.Name.EndsWith("Repository"))
                .AsImplementedInterfaces()
                .InstancePerLifetimeScope();
        base.Load(builder);
    }
}

在Global.asax.cs中

var config = GlobalConfiguration.Configuration;
var builder1 = new ContainerBuilder();
builder1.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder1.RegisterWebApiFilterProvider(config);
builder1.RegisterModule(new RepositoryModule());
using (var container1 = builder1.Build())
{
    config.DependencyResolver = new AutofacWebApiDependencyResolver(container1);
}

在此发现问题或提出任何其他简单方法。

谢谢...

删除using()。 您正在处理容器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM