Asp.net web api AutoFac不注册api控制器

Asp.net web api AutoFac不注册api控制器,asp.net-web-api,repository-pattern,autofac,Asp.net Web Api,Repository Pattern,Autofac,我正在使用AutoFac注册api控制器,但不知道是什么问题 获取错误 Type 'myApp.WebAPI.Controllers.myController' does not have a default constructor 我添加了IocHelper类,如下所示 public class IocHelper { public static IContainer CreateContainer() { var builder = new ContainerBuilde

我正在使用AutoFac注册api控制器,但不知道是什么问题

获取错误

Type 'myApp.WebAPI.Controllers.myController' does not have a default constructor
我添加了IocHelper类,如下所示

public class IocHelper {
public static IContainer CreateContainer() {

        var builder = new ContainerBuilder();
        builder.RegisterControllers(Assembly.GetExecutingAssembly());
        builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

        var container = builder.Build();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        return container;
    }
} 
提前感谢。

请参考下面的解决方案,并确保您将注入的接口明确声明为公共接口。
    Please refer the below solution, and also make sure you declared the injected interfaces as public explicitly.
    //Global.asax file -Application Start method
    protected void Application_Start()
    {
             var bootStrapApp = new BootstrapApplication()
            .ConfigureRoute(GlobalConfiguration.Configuration)
            .ConfigureContainer(new ContainerBuilder(), GlobalConfiguration.Configuration);
    }

    // BootstrapApplication.cs class file

    public class BootstrapApplication
    {
       public BootstrapApplication ConfigureRoute(HttpConfiguration httpConfiguration)
       {

          httpConfiguration.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });
          return this;
       }

      public BootstrapApplication ConfigureContainer(ContainerBuilder container, HttpConfiguration httpConfiguration)
      {
        var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(n => n.FullName.StartsWith("<projectNamespacevalue>")).ToArray();
        //projectNamespacevalue for ex. AspNet.WebApi2.Demo 
        // var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(n => n.FullName.StartsWith("AspNet")).ToArray();

        container.RegisterAssemblyTypes(assemblies).AsImplementedInterfaces();
        container.RegisterApiControllers(assemblies); //WebApi controllers scanning and registration
        var ioccontainer = container.Build();
        httpConfiguration.DependencyResolver = new AutofacWebApiDependencyResolver(ioccontainer);      
        return this;
    }
}
//Global.asax文件-应用程序启动方法 受保护的无效应用程序\u Start() { var bootStrapApp=new BootstrapApplication() .ConfigureRoute(GlobalConfiguration.Configuration) .ConfigureContainer(新的ContainerBuilder(),GlobalConfiguration.Configuration); } //BootstrapApplication.cs类文件 公共类bootstrap应用程序 { 公共引导应用程序配置路由(HttpConfiguration HttpConfiguration) { httpConfiguration.Routes.MapHttpRoute(“DefaultApi”、“api/{controller}/{id}”、新的{id=RouteParameter.Optional}); 归还这个; } 公共引导应用程序配置容器(ContainerBuilder容器,HttpConfiguration HttpConfiguration) { var assemblies=AppDomain.CurrentDomain.GetAssemblies()。其中(n=>n.FullName.StartsWith(“”)。ToArray(); //ex.AspNet.WebApi2.Demo的projectNamespacevalue //var assemblies=AppDomain.CurrentDomain.GetAssemblies()。其中(n=>n.FullName.StartsWith(“AspNet”).ToArray(); RegisterAssemblyTypes(assemblies).AsImplementedInterfaces(); container.RegisterAPI控制器(程序集);//WebApi控制器扫描和注册 var ioccontainer=container.Build(); httpConfiguration.DependencyResolver=新的AutofacWebApidencyResolver(ioccontainer); 归还这个; } }
您正在调用
IocHelper.CreateContainer
?是的,我调用
IocHelper.CreateContainer()在startup.cs类中。这是您所有的容器注册代码吗?您在哪里注册控制器的依赖项?您是在startup.cs还是在Global.asax中设置web api?我们能看到startup.cs文件吗?多亏了大家,我们才解决了这个问题。我用owin在startup.cs文件中做了很多事情,因此通过在startup.cs中调用Iocahelper,我通常只在startup.cs文件中注册我的所有模块,并更改以下内容:
GlobalConfiguration.Configuration.dependencysolver=new autofacwebapidpendencysolver(container)收件人:
config.DependencyResolver=新的AutoFacWebAPIDpendencyResolver(容器)
并添加了以下内容:
appBuilder.UseAutofacWebApi(config)您能否添加更多详细信息,说明这将如何解决问题?