Подтвердить что ты не робот

Как интегрировать Autofac с WepApi 2 и Owin?

Я использую этот пакет для интеграции Autofac с моим приложением WebApi Owin:

https://www.nuget.org/packages/Autofac.WebApi2.Owin

И после этого сообщения:

http://alexmg.com/owin-support-for-the-web-api-2-and-mvc-5-integrations-in-autofac/

Мой код в Startup.cs выглядит так:

        var config = new HttpConfiguration();

        IContainer container = EngineContext.InitializeEngine();

        var dependencyResolver = new AutofacWebApiDependencyResolver(container);
        config.DependencyResolver = dependencyResolver;

        app.UseAutofacMiddleware(container);
        app.UseAutofacWebApi(config);

        WebApiConfig.Register(config);
        app.UseWebApi(config);

Как бы то ни было, я его вращаю, переставляю код или что-то еще, Autofac просто не в состоянии разрешить что-либо. Перед Owin у меня был мой метод Global.asax:

    protected void Application_Start()
    {
        IContainer container = EngineContext.InitializeEngine();

        var dependencyResolver = new AutofacWebApiDependencyResolver(container);
        GlobalConfiguration.Configuration.DependencyResolver = dependencyResolver;

        GlobalConfiguration.Configure(WebApiConfig.Register);
    }

Что мне не хватает?

Спасибо

4b9b3361

Ответ 1

Хорошо,

Я понял это. Интеграция Autofac Owin на самом деле создает лифтоскоп Owin, доступный по всему трубопроводу Owin, доступный, таким образом, для промежуточного программного обеспечения и расширяющий этот lifetimecope до HttpRequestMessage. Это lifetimecope, отмеченный тегом AutofacWebRequest.

Таким образом, весь предыдущий код интеграции WebApi все равно должен выполняться при запуске приложения. Я включил:

    var dependencyResolver = new AutofacWebApiDependencyResolver(container);
    config.DependencyResolver = dependencyResolver;

но пропущено:

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

в методе EngineContext.Initialize, который выполняет все регистрации через построитель.

Здесь вы можете найти дополнительную информацию о том, как интегрировать Autofac с WebApi, что, очевидно, необходимо сделать и в случае Owin:

https://code.google.com/p/autofac/wiki/WebApiIntegration

Надеюсь, это полезно!