C# Can';是否将ProviderUserKey转换为GUID?

C# Can';是否将ProviderUserKey转换为GUID?,c#,asp.net,asp.net-mvc,guid,C#,Asp.net,Asp.net Mvc,Guid,嗨,我基本上是在尝试创建我自己的Facebook登录(并创建一个本地帐户)。除了这一点,我的一切都正常工作:创建帐户后,我尝试设置一个基本配置文件,并将其绑定回帐户。我可以创建帐户,但当我尝试将providerkey强制转换为Guid时,它返回null。如果我尝试不强制转换它,则会出现错误“无法隐式地将对象转换为Guid”。providerkeyvalue本身不为null,格式如下{7092216C-943F-4D30-9432-6CD10CF3447E} // Attempt to regis

嗨,我基本上是在尝试创建我自己的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将设置为成员资格类中的object。

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

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

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

根据您的评论,您的问题是没有创建pro。如果不先创建空对象的实例,则无法将值分配给该对象

“Object Reference not set to instance of Object”表示您正在尝试取消对空对象的引用,也就是说,您正在尝试访问空对象的成员或属性


在这行代码中,只有两种情况会导致该错误。配置文件为null或用户为null,如果其中任何一个为null,您将得到此错误。这是唯一可能的问题。

谢谢,但我仍然有同样的问题,我还必须按照dknaack的建议给ToString打电话。您是否使用SqlMembershipProvider?在这种情况下,您的代码应该工作(根据)。如果没有,当将user.ProviderUserKey.GetType()添加到(快速)监视窗口时,它返回什么?您的问题没有任何意义。如果将user.ProviderUserKey强制转换为guid(通过硬转换),则不会返回null,如果值为null或不是guid,则会引发异常。Guid是一种值类型,不能为null,因此,如果您发现profile.UserID为null,那一定是因为它是一种可为null的类型,并且您正在其他地方将其设置为null。您是指标准的Microsoft profile类吗?我基本上为我的文件创建了一个简单的实体。@dreadlocks1221-不,我指的是代码中名为profile的变量的任何类。好吧,你是对的,profile是空的,所以我无法为它分配GUID,尽管奇怪的是它让我在崩溃之前分配其他字段。