2017-01-25 73 views
0

我使用简单的autofac它的工作,但在模块扫描选项从组件它抛出运行时异常在Web Api。autofac模块解决配置WebApi N层

简单的工作守则的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); 
} 

发现问题这或建议任何其他简单的方法。

谢谢...

+0

你能提供例外的细节吗? –

回答

0

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