C# MembershipService.ChangePassword不';t更改密码问题

C# MembershipService.ChangePassword不';t更改密码问题,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,MembershipService.ChangePassword不会更改密码问题。我不知道为什么 var userUsers = from n in db.aspnet_Users where n.UserId == id select n; string userName = userUsers.Single<aspnet_Users>().UserName; MembershipUser user = Member

MembershipService.ChangePassword
不会更改密码问题。我不知道为什么

var userUsers = from n in db.aspnet_Users where n.UserId == id select n;
                string userName = userUsers.Single<aspnet_Users>().UserName;

                MembershipUser user = Membership.GetUser(userName, false);
                if (user != null)
                {
                    string generatedPassword = user.ResetPassword();
                    if (MembershipService.ChangePassword(userName, generatedPassword, model.NewPassword))
                    {   

// So it doesn't change the password
var userUsers=from n在db.aspnet\u Users中,其中n.UserId==id选择n;
字符串userName=useruserusers.Single().userName;
MembershipUser=Membership.GetUser(用户名,false);
如果(用户!=null)
{
字符串generatedPassword=user.ResetPassword();
if(MembershipService.ChangePassword(用户名、生成密码、型号.新密码))
{   
//所以它不会更改密码
在文档中签出:

如果密码更新成功,则ChangePassword返回
true
。 否则,它将返回
false

更改密码之前,
ChangePassword
调用提供程序的overridable
OnValidatingPassword
方法来验证新密码。然后,根据调用结果更改密码或取消操作

如果用户名、密码、新密码或密码答案不正确 有效,
ChangePassword
不会引发异常;它只是返回 错

成功更改密码后,
ChangePassword
更新用户的
LastPasswordChangedDate

有一次,当我遇到完全相同的问题时,这帮了我的忙。密码无效,因此该方法从未实际更改过密码。我在
web.config
文件中更改了一些密码配置,然后它终于工作了

检查web.config的以下行,这可能是问题所在:

<membership defaultProvider="Demo_MemberShipProvider">
    <providers>
       <add name="Demo_MemberShipProvider"
            type="System.Web.Security.SqlMembershipProvider"
            connectionStringName="cnn"
            enablePasswordRetrieval="false"
            **enablePasswordReset="true"**
            **requiresQuestionAndAnswer="true"**
            applicationName="/"
            requiresUniqueEmail="false"
            passwordFormat="Hashed"
            maxInvalidPasswordAttempts="5"
            **minRequiredPasswordLength="5"**
            **minRequiredNonalphanumericCharacters="0"**
           passwordAttemptWindow="10" passwordStrengthRegularExpression="">
    </providers>
</membership>


希望有帮助!

您是否在
if(user!=null)
行上放置了一个断点以检查用户是否真的被选中?您是否收到任何错误或密码没有更改?您是否在操作后调用了
db.SaveChanges();
?@rcdmk我是否使用了db.SaveChanges()after MembershipService.ChangePassword?否。只有当您将密码存储在数据库中或对其进行了一些更改时,才可以使用。我只是在猜测可能的错误,因为我不知道其余的代码。您是否有此方法中的任何其他相关代码?您是否仍有在
web.config
中更改的此配置设置?如果有,您可以将其发布到你的答案是什么?