Membership.GetUser(用户名) – 如何返回正确的套管?

我从URL获取用户名,所以blah.com/kevinuk。

我想在页面上有一些内容说KevinUK是什么,它存储在会员表中但是当我执行以下操作时,它会返回与输入相同的大小写。

MembershipUser member = Membership.GetUser(user); string userName = member.UserName; 

如何使用小写用户名作为参数并使用正确的大小写从数据库返回值?

目前尚不清楚您使用的是哪个成员资格提供程序,但您可以轻松地从中inheritance并覆盖GetUser方法。

创建一个inheritance自MembershipProvider类的类。

 public class MyMembershipProvider : MembershipProvider { public MyMembershipProvider() { // // TODO: Add constructor logic here // } } 

覆盖getUser方法。

 public override MembershipUser GetUser(string username, bool userIsOnline) { ... Logic here to do a case insensitive lookup... } 

最后更新Web配置以使用新的提供程序:

        

一些例子:

http://www.eggheadcafe.com/tutorials/aspnet/30c3a27d-89ff-4f87-9762-37431805ef81/aspnet-custom-membership.aspx

http://msdn.microsoft.com/en-us/library/ms366730(VS.80).aspx

遗憾的是, Membership.GetUser(string username)方法只是将MembershipUser的用户名设置为传递参数的值。 要获得正确的大小写,您需要使用Membership.GetUser(object providerUserKey) ,它接受用户的GUID,或覆盖前一个方法及其各自的存储过程以返回正确用户名。

或者,您可以简单地对两种不同的GetUser()方法进行背对背调用,但这非常浪费。

在同样的问题上弄乱并尝试上面的解决方案=获得正确套管的最简单方法:

 var user = Membership.GetUser(userName.Text); user = Membership.GetUser(user.ProviderUserKey); var correctCasing = user.UserName;