1

嗨,我基本上是在尝试创建自己的 Facebook 登录(并创建一个本地帐户)。除了这一点,我一切正常:创建帐户后,我尝试设置基本配置文件并将其绑定回帐户。我可以创建帐户,但是当我尝试将 providerkey 转换为 Guid 时,它返回 null。如果我尝试不强制转换它,我会收到错误“无法将对象隐式转换为 Guid”providerkeyvalue 本身不为空,并且格式类似于 {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 设置为成员资格类中的对象。

4

2 回答 2

0

您可以将字符串传递给Guid 结构的构造函数:

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

构造函数接受各种格式的 GUID,例如“dddddddddddddddddddddddddddddddd”、“dddddddd-dddd-dddd-dddd-dddddddddddd”、“{dddddddd-dddd-dddd-dddd-dddddddddddd}”等。

于 2012-08-02T20:55:18.783 回答
0

根据您的评论,您的问题是您没有创建 Profile 类的实例。如果不首先创建该对象的实例,就不能将值分配给空对象。

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

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

于 2012-08-02T21:27:59.413 回答