【问题标题】:Unity dependency injection in an ASP MVC 5.0 RoleProvider defined in configuration配置中定义的 ASP MVC 5.0 RoleProvider 中的 Unity 依赖注入
【发布时间】:2014-03-11 16:52:53
【问题描述】:

我正在尝试使用单独的 EF 存储库类作为可注入依赖项来实现角色提供程序,以访问我的角色存储。我的问题是角色提供者是在配置(web.config)中定义的,因此没有通过 Unity DI 容器实例化。在构建角色提供程序以在其上调用 container.BuildUP() 之后,我无法找到将配置转换为代码或获取角色提供程序的方法。任何建议,将不胜感激。

【问题讨论】:

标签: asp.net-mvc unity-container roleprovider


【解决方案1】:

我认为我的问题的解决方案在这里得到了很好的解决:

Property injection in custom membership provider using Castle

如果我搜索 MembershipProvider 而不是 RoleProvider 可能会在第一次找到它。

总结一下我的解决方案,该链接将我带到 codeplex 的 Common Service Locator library

它和它的 Unity 适配器包含在 Unity 3 的 Nuget 包中。所以我已经有了它。

我在我的 CompositionRoot 类的 Compose() 方法的末尾添加了一行:

var locator = new UnityServiceLocator(container);
ServiceLocator.SetLocatorProvider(() => locator);

我现在可以通过 RoleProvider 的构造函数中的静态 ServiceLocator 类访问定位器/容器:

    public IAuthorizationManager Manager {get; set;}

    public MyRoleProvider()
    {
        var locator = ServiceLocator.Current;
        Manager = locator.GetInstance<IAuthorizationManager>();
    }

(当然,您需要 Microsoft.Practices.ServiceLocation 的“使用”语句)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多