WebApi + Simple Injector + OWIN

天涯浪子 提交于 2019-11-29 06:00:42

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

Sergey Kolodiy

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.

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