【问题标题】:Autofac with Web Api controller带有 Web Api 控制器的 Autofac
【发布时间】:2016-05-06 10:07:37
【问题描述】:

我正在尝试将 Autofac 与 WebApi 控制器一起使用。我有:

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        AutofacConfig.Register();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }

这是我的 AutofacConfig:

 public class AutofacConfig
{       
    public static IContainer Container { get; private set; }
    public static void Register()
    {
        var builder = new ContainerBuilder();
        // Register your Web API controllers.
        builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

        //Register repositories and services.            
        Container = builder.Build();
    }
}

然后我尝试设置DependencyResolver:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        config.Filters.Add(new ExceptionHandlingAttribute());
        var container = AutofacConfig.Container;//I have registered controllers here!!!
        config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
    }
}

但是在我收到的请求期间:“确保控制器有一个无参数的公共构造函数”。

我还尝试在 AutofacConfig 类中设置 DependencyResolver,就像在 tutorial 中一样

这有什么问题?

【问题讨论】:

  • 我将容器定义为 Global.asax 上的静态字段,并在所有样板寄存器之后实例化它。 Container = new WindsorContainer().Install(FromAssembly.This()); GlobalConfiguration.Configuration.DependencyResolver = new WindsorDependencyResolver(Container.Kernel);

标签: c# asp.net-web-api dependency-injection autofac


【解决方案1】:

错误消息意味着您的控制器有一些 Autofac 不知道如何为您注入它们的依赖项。换句话说,您的控制器的构造函数有一些需要注入的依赖项(参数),但这些依赖项(服务)本身尚未在 Autofac 中注册。

如果您共享控制器的构造函数代码,我们将能够为您识别那些未注册的依赖项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多