【发布时间】:2012-10-08 19:11:40
【问题描述】:
我有一个 DDD 分层应用程序,因此它包含一个 Asp.Net MVC 4 项目和一个 WebApi 项目(表示层中有两个项目)。
使用 Asp.Net MVC 4 添加 Autofac = 好的 使用 Asp.Net WebApi 添加 Autofac = 不行
这是我的asp.net web api中的global.asax.cs
var configuration = GlobalConfiguration.Configuration;
var builder = new ContainerBuilder();
// Configure the container with the integration implementations.
// builder.ConfigureWebApi(configuration);
builder.RegisterWebApiFilterProvider(configuration);
// Register API controllers using assembly scanning.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterType(typeof(UnitOfWork)).As(typeof(IUnitOfWork)).InstancePerLifetimeScope()
.OnRelease(x => { ((IUnitOfWork)x).Commit(); });
builder.RegisterType(typeof(DatabaseFactory)).As(typeof(IDatabaseFactory)).InstancePerLifetimeScope().AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof(UserRepository).Assembly).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof(SecurityService).Assembly).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces();
var container = builder.Build();
// Set the dependency resolver implementation.
var resolver = new AutofacWebApiDependencyResolver(container);
configuration.ServiceResolver.SetResolver(resolver);
我看到的错误是: 无法从程序集“System.Web.Http,版本=4.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”加载类型“System.Web.Http.Dependencies.IDependencyResolver”。 尝试重写部分代码3次,但似乎不起作用。
已经找到了一些博客的链接,但大部分都包含对builder.ConfigureWebApi(configuration); 的引用,并且在较新的版本中不存在。
有什么想法可以解决这个问题吗?
【问题讨论】:
-
你得到什么错误?我在您的帖子中没有看到它。
-
是否有机会获得您的 IControllerFactory 实现,因为 Autofac 似乎没有附带一个?
标签: asp.net asp.net-mvc-4 asp.net-web-api