【问题标题】:Unity Custom Membership Dependency Not WorkingUnity 自定义成员资格依赖不起作用
【发布时间】:2012-06-26 22:39:49
【问题描述】:

我似乎无法弄清楚如何让依赖注入在自定义成员资格提供程序中工作。我知道成员资格提供程序基类在 ASP.NET 中进行了深层管理,但应该有一些方法可以让依赖注入对私有数据成员起作用。

我正在使用 Unity,并且仅在我的成员资格和角色提供者中看到此问题

我的问题有两个:

  1. 应用程序抱怨它没有无参数 “MyMembershipProvider”的构造函数
  2. 即使我尝试这个:https://stackoverflow.com/a/9815425/595335,ValidateUser 方法中的安全服务为空

     public class MyMembershipProvider : MembershipProvider
     {  
        public ISecurityService securityService;
    
        public MyMembershipProvider(ISecurityService securityService)
        {
        this.securityService = new SecurityService(); 
        }
    
        public override bool ValidateUser(string username, string password)
        {
             User user = securityService.GetUserByUsername(username);
    
             ...ommited...
    
        }
    

【问题讨论】:

    标签: asp.net-mvc unity-container membership-provider


    【解决方案1】:

    可能不太理想,但您可能需要使用属性注入而不是构造函数注入。

    【讨论】:

      【解决方案2】:

      问题在于您的提供程序是由静态类创建的。由于静态类没有“实例化”并且在应用程序的整个生命周期内都存在,因此无法让您的 DI 框架实例化静态类。

      有一些潜在的解决方法,但您不能使用构造函数注入。这些变通办法也很脆弱且过于复杂。简而言之,这是一个 PITA,不值得努力。通过忘记会员提供程序中的 DI,或者忘记使用 Membership 并推出自定义 IIdentity 和 IPrincipal 解决方案,您可能会省去很多麻烦。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多