我面临着一个奇怪的问题,在过去的两天里一直让我感到困惑。由于我研究并尝试了不同的解决方案,但尚未解决。
Autofac 用作 DI 容器。该解决方案包含多个项目,包括 ASP.NET MVC 5 和 Web API。我们无法在 API 项目中配置和注册 Autofac,而它在 Web 项目上正常工作。
我尝试了几种解决方案,但没有一个有效。
我面临着“ 尝试创建'OperationController'类型的控制器时发生错误。确保控制器具有无参数公共构造函数”的错误。
下面提供了代码
启动.cs
public void Configuration(IAppBuilder app)
{
var httpConfig = new HttpConfiguration();
ConfigureOAuth(app);
WebApiConfig.Register(httpConfig);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
RegisterMappers();
var builder = new ContainerBuilder();
//builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
builder.RegisterApiControllers(typeof(OperationController).Assembly).PropertiesAutowired();
builder.RegisterAssemblyTypes(Assembly.Load("PSMS.Repository"))
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
builder.RegisterType<PsmsDbContext>().InstancePerRequest();
builder.RegisterType<TransactionDbContext>().InstancePerRequest();
builder.RegisterGeneric(typeof(UnitOfWork<>)).As(typeof(IUnitOfWork<>)).InstancePerDependency();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
app.UseWebApi(httpConfig);
}
我再次重复一遍,相同的配置适用于 ASP.NET MVC 项目。
泛舟湖上清波郎朗
相关分类