小编Lar*_*fax的帖子

在Owin启动期间,Simple Injector无法为每个Web API请求注册类注入

我正在使用Owin,Web API,实体框架,ASP.NET身份创建API.我使用Simple Injector作为我选择的DI框架.

在Owin启动过程中,我想用一些示例数据为我的数据库设定种子.这由一个实现类处理IDatabaseInitializer,看起来像这样:

public class MyDbInitializer : DropCreateDatabaseAlways<MyDataContext>
{
    private readonly IUserManager _userManager;

    public MyDbInitializer(IUserManager userManager)
    {
        _userManager = userManager;
    }

    protected override void Seed(MyDataContext context)
    {
        SeedIdentities();
    }

    private void SeedIdentities()
    {
        var user = new User
        {
            UserName = "someUsername",
            Email = "some@email.com"
        };

        _userManager.CreateAsync(user, "Password");
    }
Run Code Online (Sandbox Code Playgroud)

IUserManager是ASP.NET Identiy UserManager类的代理,它间接依赖于IUnitOfWork.如果你想知道,IUserManager注册如下:

container.Register(typeof(IUserManager), 
    () => container.GetInstance<IUserManagerFactory>().Create());
Run Code Online (Sandbox Code Playgroud)

因为我想根据Web API请求使用单个工作单元,所以我已经注册了IUnitOfWork以下内容:

container.RegisterWebApiRequest<IUnitOfWork, MyUnitOfWork>();
Run Code Online (Sandbox Code Playgroud)

除了解析类中的IUserManager依赖项之外,这对于所有事情都很好MyDbInitializer.在应用程序启动期间,SimpleInjector失败并出现以下ActivationException:

SimpleInjector.ActivationException was …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection simple-injector asp.net-web-api owin

13
推荐指数
1
解决办法
5287
查看次数