首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Membership.GetUser()使用Guid

Membership.GetUser()使用Guid
EN

Stack Overflow用户
提问于 2011-12-20 04:15:36
回答 5查看 8.3K关注 0票数 3

我找到了Membership.GetUser(),但它似乎不支持通过UserId Guid检索用户信息。有没有人有好的干净利落的方法?

代码语言:javascript
复制
public MembershipUser User { // get...;set...;}

我的代码在这里是失败的。

代码语言:javascript
复制
User = Membership.GetUser(dr.GetValue(dr.GetOrdinal("Id"))); //fail

错误消息:specified method is not supported

EN

回答 5

Stack Overflow用户

发布于 2011-12-24 02:37:29

  • Guid.Parse()Guid

仅在.NET 4中可用。

  • 您不能转换string (猜测这就是从dr.GetValue()返回给Guid

的内容

因此,试着这样做:

代码语言:javascript
复制
MembershipUser m = Membership.GetUser(new Guid(
  dr.GetValue(dr.GetOrdinal("Id"))
));
票数 2
EN

Stack Overflow用户

发布于 2011-12-20 04:21:00

你可以遍历Membership.GetAllUsers()并匹配ProviderUserKey,但是@SLaks是正确的,ASP使用数字is。

代码语言:javascript
复制
foreach (var user in Membership.GetAllUsers())
{
  if ((Guid)user.ProviderUserKey == myguid)
    return user;
}

编辑Guid正如@MystereMan指出的,有一个接受overload to GetUser

代码语言:javascript
复制
public static MembershipUser GetUser(  
  Object providerUserKey  
)

尝试将dr结果转换为Guid数据类型,然后将其传递给GetUser方法(我认为返回的结果无效或无法转换)。

代码语言:javascript
复制
Guid userId = Guid.Parse(dr.GetValue(dr.GetOrdinal("Id"));
MembershipUser = Membership.GetUser(userId);
票数 0
EN

Stack Overflow用户

发布于 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

当然,这一定值得一试:

代码语言:javascript
复制
User = Membership.GetUser(dr.GetValue(dr.GetOrdinal("Id")), false); //(!fail)?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8566978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档