使用unity解析自定义成员资格提供程序

时间:2010-11-02 21:34:10

标签: asp.net-mvc unity-container

我有一个自定义成员资格提供程序,在我在Web应用程序中使用unity之前一直正常工作。

public class CustomMemberProvider : MembershipProvider

我已经完成了一些谷歌搜索并发现下面的代码段放在全局文件的application_start()中,但我不知道我需要做些什么来使它适用于我的自定义提供程序。基本上,当我在安全控制器上对validateUser()进行调用时,它无法解析依赖关系。

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

我以为我可以将“AccountMembershipService”替换为“CustomMemberProvider”,但这会导致标准“UnityControllerFactory”中的Controller Type为null。

有没有人遇到同样的问题?

感谢。

1 个答案:

答案 0 :(得分:0)

AccountMembershipService可能与VS生成的服务相同。此服务实现IMembershipService(由代码生成的自定义接口)。简单地换掉CustomMemberProvider的AccountMembershipService也不是一回事。

基本上,您的自定义成员资格提供程序实现了抽象类“MembershipProvider”,它与此“AccountMembershipService”不同,后者是SqlMembershipProvider的包装器。

您需要为成员资格提供程序创建一个包装器以实现类型。此外,我非常确定Membership.Provider会将您带到System.Web.Security.MembershipProvider,而不是您的自定义提供程序。