WebApi + Simple Injector + OWIN

后端 未结 2 704
难免孤独
难免孤独 2020-12-17 16:21

I am trying to use SimpleInjector with OWIN in a WebAPI project. However, the following line in ConfigureAuth fails

app.CreatePerOwinContext(co         


        
相关标签:
2条回答
  • 2020-12-17 16:44

    I used the following code to solve this issue.

    public static void UseOwinContextInjector(this IAppBuilder app, Container container)
    {
    // Create an OWIN middleware to create an execution context scope
    app.Use(async (context, next) =>
    {
         using (var scope = container.BeginExecutionContextScope())
         {
             await next.Invoke();
         }
    });
    }
    

    and then called app.UseOwinContextInjector(container); right after registering the dependancies.

    Thanks to this post

    0 讨论(0)
  • 2020-12-17 16:54

    You may find this question useful. The idea is to avoid using OWIN to resolve dependencies because it introduces some clutter to your controllers code. The following code that uses OWIN to resolve UserManager instance is a Service Locator anti-pattern:

    public ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();                
        }
        set
        {
            _userManager = value;
        }
    }
    

    Instead of relying on OWIN to resolve dependencies, inject required services into your controller's constructor and use IDependencyResolver to build controller for you. This article demonstrates how to use dependency injection in ASP.NET Web API.

    0 讨论(0)
提交回复
热议问题