嗨,我基本上是试图创建自己的Facebook登录(并创建一个本地帐户)。我有一切工作,除了这一点:创建帐户后,我试图设置一个基本的配置文件,并将其绑回帐户。我能够创建该帐户,但是当我尝试将提供程序键强制转换为Guid时,它将返回为空。如果我尝试不投它,我得到错误“不能隐式对象转换为guid”的providerkeyvalue本身不为空,并且在这样的格式{7092216C-943F-4D30-9432-6CD10CF3447E}无法将ProviderUserKey转换为GUID?
// 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设置为仅在会员类中的对象。
你在使用SqlMembershipProvider吗?在这种情况下,你的代码应该可以工作(根据http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser.provideruserkey.aspx)。如果没有,当将其添加到(快速)观察窗口时,user.ProviderUserKey.GetType()会返回什么? – M4N 2012-08-02 21:19:03
你的问题没有任何意义。如果将user.ProviderUserKey转换为guid(通过强制转换),则它不会返回null,如果该值为null或不是guid,则会引发异常。 Guid是一个值类型,不能为空,所以如果你找到了profile.UserID为null,它必须是因为它是可以为空的类型,并且你将它设置为null。 – 2012-08-02 21:22:03