1

こんにちは私は基本的に自分のFacebookログインを作成しようとしています(そしてローカルアカウントを作成しようとしています)。私はこの1ビットを除いてすべてが機能しています:アカウントを作成した後、基本的なプロファイルを設定し、それをアカウントに結び付けようとしています。アカウントを作成することはできますが、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はメンバーシップクラスのオブジェクトのみに設定されます。

4

2 に答える 2

0

コメントに基づくと、問題は、Profileクラスのインスタンスを作成していないことです。最初にそのオブジェクトのインスタンスを作成せずに、nullオブジェクトに値を割り当てることはできません。

「オブジェクト参照がオブジェクトのインスタンスに設定されていない」とは、nullオブジェクトを逆参照しようとしていること、つまりnullであるオブジェクトのメンバーまたはプロパティにアクセスしようとしていることを意味します。

そのコード行には、そのエラーの原因となるものが2つだけあります。プロファイルがnullまたはユーザーがnullのいずれかであり、どちらかがnullの場合、このエラーが発生します。それがおそらく唯一のことです。

于 2012-08-02T21:27:59.413 に答える
0

文字列をGuid構造体のコンストラクターに渡すことができます。

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

コンストラクターは、「dddddddddddddddddddddddddddddddd」、「dddddddd-dddd-dddd-dddd-dddddddddddd」、「{dddddddd-dddd-dddd-dddd-dddddddddddd}」などのさまざまな形式のGUIDを受け入れます。

于 2012-08-02T20:55:18.783 に答える