MembershipUser.Email возвращает ноль, даже если электронная почта хранится в базе данных.

Моя проблема в том, что я не могу получить доступ к электронной почте пользователя при использовании метода Membership.GetUser(username). Мне это нужно, когда я сбрасываю пароль. Я получаю имя пользователя в запросе POST. Мой код выглядит так:

...
System.Web.Security.MembershipUser user = System.Web.Security.Membership.GetUser(model.UserName);
    if (user != null)
     {   
         string emailAddress = user.Email;
...

Я уверен, что пользователь, которому я пытаюсь сбросить пароль, хранит электронную почту в базе данных, но когда я хочу ее получить, user.Email имеет значение null.

Может ли кто-нибудь помочь мне с этой проблемой? Заранее спасибо.

1 ответ

Решение

Методы, которые вы используете, предназначены для традиционного членства в ASP.NET, а не для SimpleMembership. Вот способ получить эту информацию от SimpleMembership.

var user = context.UserProfiles.SingleOrDefault(u => u.UserName == username);
var email = user.Email;

Вы можете прочитать больше о доступе и настройке UserProfile здесь.

Здесь также есть статья о настройке сброса пароля для SimpleMembership, а исходный код доступен здесь.

Другие вопросы по тегам