C# Membership.ValidateUser在升级到VS 2010/.NET 4.0后始终返回false
不确定这是否与VS2010或升级的框架有关,但是。。。我们正在使用Oracle成员资格提供程序对用户进行身份验证。在升级之前,一切正常,但是现在C# Membership.ValidateUser在升级到VS 2010/.NET 4.0后始终返回false,c#,asp.net,oracle,asp.net-membership,C#,Asp.net,Oracle,Asp.net Membership,不确定这是否与VS2010或升级的框架有关,但是。。。我们正在使用Oracle成员资格提供程序对用户进行身份验证。在升级之前,一切正常,但是现在Membership.ValidateUser(用户,密码)返回false,尽管凭据有效。没有抛出异常,因此很难确定问题可能是什么。VS2010中的网站管理工具仍然能够管理用户和角色(或多或少),因此我没有理由质疑连接性。可能是什么问题?您可能遇到了machineKey差异 在web.config中,隐式machineKey部分使用自动生成的加密和验证密
Membership.ValidateUser(用户,密码)
返回false
,尽管凭据有效。没有抛出异常,因此很难确定问题可能是什么。VS2010中的网站管理工具仍然能够管理用户和角色(或多或少),因此我没有理由质疑连接性。可能是什么问题?您可能遇到了machineKey差异
在web.config中,隐式machineKey
部分使用自动生成的加密和验证密钥,这些密钥再次根据应用程序Id设置密钥(AutoGenerate,IsolateApps
)
您是使用不同的应用程序实例还是在另一台计算机上进行测试
Oracle成员资格提供程序是2.0还是4.0
这只是在黑暗中摸索,也许这会引导你找到解决办法
从
会员类型
ASP.NET成员资格中使用的某些类型(例如System.Web.Security.MembershipProvider)已从System.Web.dll移动到System.Web.ApplicationServices.dll程序集。移动这些类型是为了解决客户端和扩展.NET Framework SKU中类型之间的体系结构分层依赖关系
在ASP.NET 4项目中使用时,从早期版本的ASP.NET升级并使用已移动成员类型的类库可能无法编译。如果是,请在类库项目中将引用添加到System.Web.ApplicationServices.dll
答案(根据)是在Web.config中指定hashAlgorithmType=“SHA1”
:
<membership defaultProvider="OracleMembershipProvider" hashAlgorithmType="SHA1"/>
这并没有解决现有用户的问题,但新创建的用户现在可以登录。听起来有点像我遇到的问题 将machineKey元素添加到web.config而不是hashAlgorithmType=“SHA1”修复了该问题。。但我还是不明白为什么我要把它放在那里。。。也找不到任何文档 你可以在这里查看我的问题。。
我们的编译没有问题,Oracle成员资格提供程序2.0和4.0都出现了问题。我猜对于新创建的用户来说,添加
hashAlgorithmType
是一个麻烦。尝试在没有新用户的情况下添加和验证新用户。我怀疑问题与自动生成的机器钥匙有关。我正在写一些测试。将更新答案。新创建的用户可以在另一个(开发)框上进行身份验证,因此我认为hashAlgorithmType解决了这个问题。@nw-感谢您的回答,因为我遇到了同样的问题,而且我的头撞了几个小时的墙。在升级到.NET4.0时,似乎没有任何文档说明必须进行此更改。