会员提供者在我的文化中不能很好地运作

时间:2014-02-12 10:56:55

标签: c# asp.net-mvc-4 asp.net-membership membership-provider simplemembership

成员资格提供程序使用ToUpperInvarint()函数对userName进行大写,并且找不到用户具有特定于文化的字母,因此不能正常工作并抛出异常。

例如:在土耳其文化中,“admin”的大写字母是带有toUpper()方法的“ADMİN”,带有ToUpperInvariant()方法的是“ADMIN”。因为成员资格提供程序在其SQL查询中使用toUpperInvariant for userName和UPPER([userName]),所以无法找到一些用户。

我不知道如何修复它,请指导我?谢谢

if (membership.GetUser("admin", false) == null)
       membership.CreateUserAndAccount("admin", "admin123");

此代码失败了两次,首先当用户“admin”存在时无法找到它,因为:它使用此查询在DB中搜索:

SELECT [userID] from [User] WHERE (UPPER([userName]) = @0);

第二,如果用户不存在(或找不到)尝试创建用户“admin”并且成功,但是当再次尝试为用户“admin”创建帐户时,它会尝试获取上面的“[userID]” sql查询,它找不到并抛出异常。因为“ADMIN!=ADMİN”

我的sql server(或我的数据库)排序规则是Turkish-CI

0 个答案:

没有答案