我找到了Membership.GetUser(),但它似乎不支持通过UserId Guid检索用户信息。有没有人有好的干净利落的方法?
public MembershipUser User { // get...;set...;}我的代码在这里是失败的。
User = Membership.GetUser(dr.GetValue(dr.GetOrdinal("Id"))); //fail错误消息:specified method is not supported
发布于 2011-12-24 02:37:29
Guid.Parse()和Guid仅在.NET 4中可用。
string (猜测这就是从dr.GetValue()返回给Guid的内容
因此,试着这样做:
MembershipUser m = Membership.GetUser(new Guid(
dr.GetValue(dr.GetOrdinal("Id"))
));发布于 2011-12-20 04:21:00
你可以遍历Membership.GetAllUsers()并匹配ProviderUserKey,但是@SLaks是正确的,ASP使用数字is。
foreach (var user in Membership.GetAllUsers())
{
if ((Guid)user.ProviderUserKey == myguid)
return user;
}编辑Guid正如@MystereMan指出的,有一个接受的overload to GetUser:
public static MembershipUser GetUser(
Object providerUserKey
)尝试将dr结果转换为Guid数据类型,然后将其传递给GetUser方法(我认为返回的结果无效或无法转换)。
Guid userId = Guid.Parse(dr.GetValue(dr.GetOrdinal("Id"));
MembershipUser = Membership.GetUser(userId);发布于 2011-12-20 04:38:37
根据我所看到的,基类MembershipProvider有一个用签名重载的GetUser()方法:
GetUser(providerUserKey As Object, userIsOnline As Boolean)
和
GetUser(username As String, userIsOnline As Boolean)
So...maybe你错过了布尔值吗?根据您使用的提供商的不同,可能会有所不同。这看起来确实适用于SqlMembershipProvider。
http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx
当然,这一定值得一试:
User = Membership.GetUser(dr.GetValue(dr.GetOrdinal("Id")), false); //(!fail)?https://stackoverflow.com/questions/8566978
复制相似问题