【发布时间】:2015-06-25 02:22:33
【问题描述】:
我有一个使用 ASP.NET Identity 进行身份验证/授权的 ASP.NET Web API 项目。我已经插入了我自己的自定义身份实现,即我自己的 UserStore 来与 Azure 表对话,并删除了 EF/SQL Server 的东西。但是,我看到的大多数文档都建议在 Startup.Auth.cs 类中创建 UserManagerFactory 的实例,如下所示:
public static Func<UserManager<CustomIdentityModel>> UserManagerFactory { get; set; }
UserManagerFactory = () => new UserManager<CustomIdentityModel>(new CustomUserStore<CustomIdentityModel>());
我的 CustomUserStore 依赖于另一个项目中的存储库,我依赖注入到构造函数中。
private readonly IRepository _repo;
public CustomUserStore(IRepository repo)
{
_repo = repo;
}
但是,在 Startup.Auth.cs 中创建“new CustomUserStore()”是一种反模式,无法解决依赖关系。创建 UserManager 时解决这种依赖关系的正确方法是什么?我想要么不必“新建” UserManagerFactory,要么以某种方式解决内联依赖:
new UserManager<CustomUserModel>(container.Resolve<IRepository>());
那么问题就变成了,如何获取单个IOC容器实例……
【问题讨论】:
标签: c# asp.net-web-api dependency-injection asp.net-identity