我有一个自定义成员资格提供程序,在我在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。
有没有人遇到同样的问题?
感谢。
答案 0 :(得分:0)
AccountMembershipService可能与VS生成的服务相同。此服务实现IMembershipService(由代码生成的自定义接口)。简单地换掉CustomMemberProvider的AccountMembershipService也不是一回事。
基本上,您的自定义成员资格提供程序实现了抽象类“MembershipProvider”,它与此“AccountMembershipService”不同,后者是SqlMembershipProvider的包装器。
您需要为成员资格提供程序创建一个包装器以实现类型。此外,我非常确定Membership.Provider会将您带到System.Web.Security.MembershipProvider,而不是您的自定义提供程序。