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

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

答案(根据这篇文章 )是在Web.config中指定hashAlgorithmType="SHA1"

  

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

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

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

你可以在这里查看我的问题..提供的用户名或密码不正确。 在MVC 3 Internet Application中

您可能遇到machineKey差异。

在web.config中 – 隐式machineKey部分使用自动生成的加密和validation密钥,这些密钥再次针对应用程序ID( AutoGenerate,IsolateApps )进行了键控。

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

Oracle成员资格提供程序是2.0还是4.0?

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

来自.NET Framework 4迁移问题

会员类型

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