2010-11-02 53 views
0

我有一個自定義的會員供應商,它工作正常,直到我在Web應用程序中使用統一。解決使用統一的自定義會員供應商

public class CustomMemberProvider : MembershipProvider 

我做了一些谷歌上搜索,發現下面的代碼片段在全局文件的Application_Start()的地方,但我不知道我需要做它,使其爲我定製的供應商合作。基本上,當我在我的安全控制器上對validateUser()進行調用時,它無法解析依賴關係。

 _container.RegisterType<IFormsAuthenticationService, FormsAuthenticationService>() 
     .RegisterType<IMembershipService, AccountMembershipService>() 
     .RegisterInstance<MembershipProvider>(Membership.Provider); 

我以爲我可以換「AccountMembershipService」爲「CustomMemberProvider」,但會導致控制器類型是標準的「UnityControllerFactory」無效。

有沒有人有同樣的問題?

謝謝。

回答

0

AccountMembershipService可能與VS生成的服務相同。此服務實現IMembershipService(由代碼生成的自定義界面)。只需將CustomMemberProvider替換爲AccountMembershipService不會是同一件事。

本質上,您的自定義成員資格提供程序實現與此「AccountMembershipService」不同的抽象類「MembershipProvider」,它是SqlMembershipProvider的包裝。

您需要爲成員資格提供程序製作一個包裝來實現類型。另外,我很確定Membership.Provider會帶你到System.Web.Security.MembershipProvider,而不是你的自定義提供者。

+0

感謝您的回覆。 – user375564 2010-11-02 22:41:25

+0

感謝您的回覆。 CustomMemberProvider繼承MembershipProvider並重寫這些方法。我有一個實現IMembershipService的CustomMembershipService,我已經在Webconfig中註冊了CustomMemberProvider,而不是默認的。仍然沒有解決安全控制器中的依賴關係。 – user375564 2010-11-02 22:53:24

+0

您可以發佈多一點代碼,最好是所有這些對象是什麼,至少是他們的名稱空間以及包含在您的global.ascx中? – Dave 2010-11-06 01:13:21