2012-06-26 26 views
0

我似乎無法弄清楚如何獲得依賴注入在自定義成員資格提供程序中工作。我知道成員資格提供程序的基類是在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... 
    
        } 
    

回答

1

它可能不那麼理想,但您可能需要使用屬性注入而不是構造函數注入。

1

問題是你的提供者是由靜態類創建的。由於靜態類不是「實例化」的並且在應用程序的整個生命週期中都存在,因此無法讓您的DI框架實例化靜態類。

有潛在的解決方法,但不能使用構造函數注入。這些解決方法也很脆弱並且過於複雜。簡而言之,這是一個PITA,只是不值得。通過在會員提供商忘記DI或者忘記使用會員資格並推出自定義IIdentity和IPrincipal解決方案,您可能會爲自己節省很多頭痛。

相關問題