Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 会员用户名是否为大写?_C#_Asp.net - Fatal编程技术网

C# 会员用户名是否为大写?

C# 会员用户名是否为大写?,c#,asp.net,C#,Asp.net,我使用内置的ASP.NET成员数据库模式来处理用户和配置文件。我已经构建了一个自定义配置文件,它从System.Web.profile.ProfileBase中插入。在解决方案的某些部分中,数据从数据库中列出并呈现在html表中。此列表后面的In代码按当前登录用户的用户名进行过滤 示例: 这在所有浏览器中都可以正常工作。但在一些经过测试的设备上:iPad、iPhone,有时在internetexplorer8中,列表是空的。我的第一个想法是,这是与JavaScript/HTML/CSS相关的东

我使用内置的ASP.NET成员数据库模式来处理用户和配置文件。我已经构建了一个自定义配置文件,它从System.Web.profile.ProfileBase中插入。在解决方案的某些部分中,数据从数据库中列出并呈现在html表中。此列表后面的In代码按当前登录用户的用户名进行过滤

示例:

这在所有浏览器中都可以正常工作。但在一些经过测试的设备上:iPad、iPhone,有时在internetexplorer8中,列表是空的。我的第一个想法是,这是与JavaScript/HTML/CSS相关的东西造成的。在调试会话之后,我发现在这些情况下UserName属性的值是大写的。此值来自.NET ProfileBase类,因此没有自定义的操作

我使用内置的System.Web.Security.Membership类测试了相同的比较方法。它以大写形式返回用户名

例如:

为了解决这个问题,目前我正在覆盖ProfileBase中的UserName属性:

public新字符串用户名
{
得到
{
返回base.UserName.ToLower();
}
}

aspnet_Users标准表有两列保存用户名:username和LoweredUserName。查看数据库时,没有大写的用户名。那么这是怎么发生的呢

你应该包括相关代码并解释“在iPad上”等的含义。ASP.NET代码通常不会在“iPad”上运行,而是在服务器上运行。用户名来自哪里?如何将它们从/存储到数据库?很多不确定性,只是一些明确的事实,无法合理地回答。为什么不使用用户的ID,比如,(Guid)ProviderUserKey?即使用户名更改,此GUID也不会更改。是的,我知道。但不幸的是,在这个解决方案中,这不是一个选项。我只想知道这种不受欢迎的行为的原因。我现在唯一想到的是当前的文化和本地化,当前的线程和http上下文。在这种情况下,这会有影响吗?摘自MSDN:“在某些情况下,由于设备操作系统的差异,字符串可以与完整的.NET Framework进行不同的比较。”。但这会影响比较吗?在这种情况下,用户名属性值因设备而异,因此在进行比较之前就存在了。
if (usernameString.Equals(MyCustomProfile.UserName))`  
    // add to list

myRepeater.DataSource = myFilteredList;
myRepeater.DataBind();
var user = Membership.GetUser();
if (usernameString.Equals(user.UserName))
    // add to list