2017-01-25 74 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()。你正在處理容器。