簡體   English   中英

帶有Web Api控制器的Autofac

[英]Autofac with Web Api controller

我正在嘗試將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,就像在教程中一樣

怎么了

該錯誤消息表示您的控制器具有某些依賴關系,Autofac不知道該依賴關系如何為您注入它們。 換句話說,控制器的構造函數具有一些需要注入的依賴項(參數),但是這些依賴項(服務)本身尚未在Autofac中注冊。

如果您共享控制器的構造函數代碼,我們將能夠為您識別那些未注冊的依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM