在升级到VS 2010 / .NET 4.0后,Membership.ValidateUser始终返回false

时间:2010-04-28 13:51:44

标签: c# asp.net oracle asp.net-membership

不确定这是属于VS 2010还是升级后的框架,但是......我们正在使用Oracle成员资格提供程序对用户进行身份验证。升级之前一切正常,但现在尽管有效凭据,Membership.ValidateUser(user, password)仍会返回false。没有异常抛出,因此很难确定问题可能是什么。 VS 2010中的网站管理工具仍然能够管理用户和角色(或多或少),因此我没有理由质疑连接。问题可能是什么?

3 个答案:

答案 0 :(得分:7)

答案(根据this post)是在Web.config中指定hashAlgorithmType="SHA1"

<membership defaultProvider="OracleMembershipProvider" hashAlgorithmType="SHA1"/>

这并没有解决现有用户的问题,但新创建的用户现在可以登录。

答案 1 :(得分:1)

听起来有点像我遇到的问题......

将一个machineKey元素添加到web.config而不是hashAlgorithmType =“SHA1”修复了问题..但我仍然不明白为什么我需要把它放在那里...无法找到任何文档..

你可以在这里查看我的问题.. The user name or password provided is incorrect. in MVC 3 Internet Application

答案 2 :(得分:0)

您可能遇到了machineKey差异。

在web.config中 - 隐式machineKey部分使用自动生成的加密和验证密钥,这些密钥再次针对应用ID(AutoGenerate,IsolateApps)进行了锁定。

您是在使用其他应用程序实例还是在其他计算机上进行测试?

Oracle会员提供商是2.0还是4.0?

这只是在黑暗中刺伤,也许这会引导你找到解决方案。

来自.NET Framework 4 Migration Issues

会员类型

ASP.NET成员资格中使用的某些类型(例如,System.Web.Security.MembershipProvider)已从System.Web.dll移动到System.Web.ApplicationServices.dll程序集。移动类型是为了解决客户端和扩展.NET Framework SKU中类型之间的架构分层依赖关系。

从早期版本的ASP.NET升级并使用已移动的成员资格类型的类库在ASP.NET 4项目中使用时可能无法编译。如果是这样,请在类库项目中将引用添加到System.Web.ApplicationServices.dll