Asp.net 当用户被批准且未被锁定时,Membership.ValidateUser为什么会返回false?

Asp.net 当用户被批准且未被锁定时,Membership.ValidateUser为什么会返回false?,asp.net,membership-provider,Asp.net,Membership Provider,我知道这看起来和其他问题很相似,但我认为我的情况和他们的不一样 我有一个网站,使用AspNetSqlMembershipProvider验证用户。我想从控制台应用程序中使用相同的数据库。根据web上的几篇文章,我可以从ASP.NET外部使用System.web.Security.Membership类,方法是将相应的部分从web.config复制到app.config。我就是这么做的 我的控制台应用程序可以获取具有请求名称的用户,并且我可以确认该用户已被批准且未被锁定,但是ValidateUse

我知道这看起来和其他问题很相似,但我认为我的情况和他们的不一样

我有一个网站,使用AspNetSqlMembershipProvider验证用户。我想从控制台应用程序中使用相同的数据库。根据web上的几篇文章,我可以从ASP.NET外部使用System.web.Security.Membership类,方法是将相应的部分从web.config复制到app.config。我就是这么做的

我的控制台应用程序可以获取具有请求名称的用户,并且我可以确认该用户已被批准且未被锁定,但是ValidateUser返回false以获得正确的用户名和密码对

我在一些文章中发现,人们在迁移代码时遇到了问题,这可能是由于机器密钥不匹配造成的,但也发现了一个参考,指出机器密钥仅在passwordFormat属性等于encrypted时使用,而我使用的是hashed

问题是网站和控制台应用程序这两段代码位于不同的程序集中,并且在密码散列过程中使用了程序集名称或其他属性?在这两种情况下,应用程序名称属性都设置为/


我应该继续使用这种方法,还是直接访问数据库,自己散列密码?

看看这篇文章:

在app.config中添加成员资格配置设置可能会有所帮助


希望有帮助

事实证明,网站代码的原始作者(不是我)在使用之前将输入的密码转换为大写。由于我不知道这一点,而且我的控制台应用程序也没有这样做,ValidateUser正确地报告密码不匹配。

我已经从我的web.config复制了成员资格配置设置。我可以在控制台应用程序中使用Membership.GetUser检索用户,这样我就知道数据库连接正在工作,但Membership.ValidateUser返回false。下面是一个疑难解答提示:从windows应用程序创建新用户,然后尝试验证该用户凭据。看看这是否有效。我能够验证我创建的一个用户,这让我调查了网站代码,这反过来又让我找到了答案,所以谢谢你的提示。