无法将ProviderUserKey转换为GUID?

时间:2012-08-02 20:49:56

标签: c# asp.net asp.net-mvc guid

您好我基本上是在尝试创建自己的Facebook登录(并创建一个本地帐户)。我有一切工作,除了这一点:创建帐户后,我正在尝试设置基本配置文件并将其绑定回帐户。我能够创建帐户但是当我尝试将providerkey转换为Guid时,它返回null。如果我尝试不转换它我得到错误“不能隐式地将对象转换为Guid”providerkeyvalue本身不为null并且格式如下{7092216C-943F-4D30-9432-6CD10CF3447E}

// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(fbprofile.first_name + fbprofile.id, GenerateRandomPassword(8), fbprofile.email, null, null, true, null, out createStatus);

if (createStatus == MembershipCreateStatus.Success) 
{
    MembershipUser user = Membership.GetUser(fbprofile.first_name + fbprofile.id); //Gotta get the GUID and tie it to the profile


    profile.UserID = (Guid)user.ProviderUserKey;
}else{
}

编辑:如果它有所不同,则ProviderUserKey设置为成员资格类中的对象。

2 个答案:

答案 0 :(得分:0)

您可以将字符串传递给Guid结构的constructor

// user.ProviderUserKey == "{7092216C-943F-4D30-9432-6CD10CF3447E}"
profile.UserID = new Guid(user.ProviderUserKey);

构造函数接受各种格式的GUID,例如“dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd

答案 1 :(得分:0)

根据您的评论,您的问题是您没有创建Profile类的实例。如果不先创建该对象的实例,则无法为null对象赋值。

“对象引用未设置为对象的实例”意味着您尝试取消引用空对象,即您正在尝试访问对象的成员或属性为null。

在该行代码中,只有两件事会导致该错误。如果profile为null或user为null,如果其中任何一个为null,则会出现此错误。这是唯一可能的事情。