Autofac WebApi 2 OWIN Not Working

戏子无情 提交于 2019-12-10 10:37:25

问题


Having an issue with Autofac and WebApi2 using OWIN. Basically the Constructor isn't getting Injected.

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var config = new HttpConfiguration();
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "Default Route",
            routeTemplate: "{controller}.{ext}"
        );

        config.Routes.MapHttpRoute(
            name: "Default Route with Id",
            routeTemplate: "{controller}/{id}.{ext}",
            defaults: new { id = RouteParameter.Optional }
        );

        var builder = new ContainerBuilder();

        builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
        builder.Register(c => new Logger()).As<ILogger>().InstancePerRequest();

        var container = builder.Build();
        var resolver = new AutofacWebApiDependencyResolver(container);
        GlobalConfiguration.Configuration.DependencyResolver = resolver;

        app.UseAutofacWebApi(GlobalConfiguration.Configuration);
        app.UseWebApi(config);
    }
}

public class UsersController : ApiController
{
    private readonly ILogger _logger;

    public UsersController(ILogger logger)
    {
         _logger = logger;
    }
}

I'm using the Autofac.Integration.Owin nuget alpha package. What am I missing?


回答1:


Try using the config configuration object all the way through. In the middle you switch to GlobalConfiguration. In OWIN + Web API you won't use the static configuration object, just the instance you create while configuring the OWIN app.



来源:https://stackoverflow.com/questions/23957038/autofac-webapi-2-owin-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!