Custom MembershipProvider: Dla tego obiektu nie zdefiniowano żadnego konstruktora bez parametrów
Mam niestandardową klasę MembershipProvider, która dziedziczy z MembershipProvider, która ma dwa parametry:
public class CustomMembershipProvider : MembershipProvider
{
private readonly ISecurityRepository _securityRepository;
private readonly IUserRepository _userRepository;
public CustomMembershipProvider(ISecurityRepository securityRepository, IUserRepository userRepository)
{
...
}
public override MembershipUser GetUser(string username, bool userIsOnline)
{
...
}
... etc
}
Plik konfiguracyjny tego wygląda podobnie:
<membership defaultProvider="CustomMembershipProvider">
<providers>
<clear />
<add name="CustomMembershipProvider" type="Library.Membership.CustomMembershipProvider" />
</providers>
</membership>
Działa to dobrze głównie w mojej aplikacji internetowej do logowania i wylogowywania się. Używam Unity dla DI i mam niezbędne ustawienia klas w mojej klasie Boostrapper.cs.
Ostatnio jednak wystąpił problem, gdy chciałem utworzyć niestandardową klasę użytkownika i nazwał jąCzłonkostwo.GetUser metoda. Otrzymuję następujący wyjątek, gdy robię:
{"No parameterless constructor defined for this object. (C:\\*app path*\\web.config line 43)"}
Linia 43 w moim pliku konfiguracyjnym wskazuje na niestandardowego dostawcę członkostwa, który opublikowałem powyżej. Myślę, że gdzie indziej aplikacja używa Unity do rozwiązywania tych parametrów, ale gdy korzysta z klasy członkostwa, nie działa.
Czy jest jakiś sposób, w jaki mogę powiedzieć aplikacji, jak rozwiązać te zależności lub czy nie istnieje sposób na dodanie tych zależności do mojego dostawcy członkostwa bez użycia konkretnej implementacji?
EDYTUJ 1:
Oto niestandardowa klasa użytkownika:
public class User : MembershipUser
{
public int UserId { get; set; }
public string Username { get; set; }
public string Email { get; set; }
public DateTime LastLoggedOnDate { get; set; }
...
}
EDYCJA 2:
W mojej niestandardowej klasie dostawcy członkostwa wygląda to tak, jak wygląda metoda GetUser:
public override MembershipUser GetUser(string username, bool userIsOnline)
{
return _userRepository.GetUser(username);
}