Разрешите индивидуального поставщика членства, используя единство - PullRequest
0 голосов
/ 03 ноября 2010

У меня есть пользовательский поставщик членства, который работает нормально, пока я не использую Unity в веб-приложении.

public class CustomMemberProvider : MembershipProvider

Я выполнил поиск в Google и нашел приведенный ниже фрагмент, чтобы поместить его в application_start () глобального файла, но я не уверен, что мне нужно сделать, чтобы он работал для моего пользовательского провайдера.,В основном, когда я выполняю вызов validateUser () на моем контроллере безопасности, он не может разрешить зависимости.

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

Я думал, что смогу поменять "AccountMembershipService" на "CustomMemberProvider", но это заставит тип контроллераnull в стандартном UnityControllerFactory.

У кого-нибудь были такие же проблемы?

спасибо.

1 Ответ

0 голосов
/ 03 ноября 2010

AccountMembershipService, вероятно, тот же сервис, который генерирует VS. Этот сервис реализует IMembershipService (пользовательский интерфейс, сгенерированный кодом). Простая замена AccountMembershipService для CustomMemberProvider не будет тем же самым.

По сути, ваш пользовательский поставщик членства реализует абстрактный класс "MembershipProvider", который отличается от этого "AccountMembershipService", который является оболочкой для SqlMembershipProvider.

Вам нужно создать оболочку для вашего провайдера членства, чтобы реализовать тип. Кроме того, я почти уверен, что Membership.Provider приведет вас к System.Web.Security.MembershipProvider, а не к вашему пользовательскому провайдеру.

...