Я реализую пользовательский поставщик членства, и все кажется плавным, пока я не создаю объект MembershipUser. В этот момент, я получаю сообщение об ошибке:ASP.NET MVC3 Пользовательский поставщик членства - указанное имя поставщика членства недействительно
The membership provider name specified is invalid. Parameter name: providerName
В web.config
ключ членство
<membership defaultProvider="MembersProvider">
<providers>
<clear/>
<add name="MembersProvider" type="Members.Providers.MembersProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="DeviceDatabase" />
</providers>
</membership>
При создании объекта MembershipUser из моего пользовательского класса User:
public static MembershipUser ToMembershipUser(User user)
{
MembershipUser member = new MembershipUser
("MembersProvider"
, user.Name
, user.Id
, user.EmailAddress
, user.PasswordQuestion
, user.Comment
, user.IsApproved
, user.IsLockedOut
, user.DateCreated
, user.LastLoginDate ?? DateTime.MinValue
, user.LastActivityDate ?? DateTime.MinValue
, user.LastPasswordChangedDate ?? DateTime.MinValue
, user.LastLockoutDate ?? DateTime.MinValue
);
return member;
}
(I что я мог бы просто наследовать свой класс User из MembershipUser, но он уже является частью существующей иерархии классов. Я честно считаю, что это первый раз Я столкнулся легитимную необходимость для множественного наследования!)
У меня такое ощущение, что параметр new MembershipUser(...)
ProviderName должен соответствовать тому, что это установлено в web.config
, но, так как они совпадают уже, я в недоумении, как действовать.
Есть ли удобный способ получить имя активного поставщика членства в коде?
Я начинаю думать, что использование встроенной системы членства является излишним и большим количеством проблем, чем того стоит.
Редактировать Не уверен, что это релевантно, но пользовательский класс поставщика членства находится в библиотеке классов, а не в основном проекте WAP.
Update Вот содержимое System.Web.Security.Membership.Provider
объекта, как показывают в окне командной строки VS2010:
>eval System.Web.Security.Membership.Provider
{Members.Providers.MembersProvider}
[Members.Providers.MembersProvider]: {Members.Providers.MembersProvider}
base {System.Configuration.Provider.ProviderBase}: {Members.Providers.MembersProvider}
ApplicationName: null
EnablePasswordReset: true
EnablePasswordRetrieval: false
MaxInvalidPasswordAttempts: 5
MinRequiredNonAlphanumericCharacters: 0
MinRequiredPasswordLength: 6
PasswordAttemptWindow: 10
PasswordFormat: Function evaluation was aborted.
PasswordStrengthRegularExpression: Cannot evaluate expression because debugging information has been optimized away .
RequiresQuestionAndAnswer: Cannot evaluate expression because debugging information has been optimized away .
RequiresUniqueEmail: Cannot evaluate expression because debugging information has been optimized away .
Update 2
Это просто случайно начал работать, а это значит, я что-то изменилось, но не помню, что это было. Глупый мозг. Я приму единственный ответ, который был опубликован, и обновить его, если я выясню, в чем проблема.
вы можете попытаться сделать 'тип =«Members.Providers.MembersProvider»' полностью кванти связанный с установкой сборки в конце и посмотреть, как это работает – amarsuperstar
Не могли бы вы расширить «поставить сборку в конце»? –
Редактировать, игнорировать это. Ваше редактирование со следом доказывает, что загружает правильный тип – amarsuperstar