です。 私は、The given key was not present in the dictionary.
というエラーをスローする問題が何であるか把握しようとしていますが、残念なことに多くのSOの質問とブログの投稿はあまり役に立ちませんでした。解決方法指定されたキーが辞書エラーに存在しませんでしたか?
私はシンプルなFacebookバッチパラメータ辞書を持っています。私は結果を反復しているときに、エラーThe given key was not present in the dictionary
をスローします。ここで
は、例外が発生したコードである:ここでは
foreach (FacebookPermissionModel permissionResult in
result.SelectMany(x => x.data).Where(y => y.status == "granted"))
{
RequiredPermissions[permissionResult.permission].granted = true; // the error comes from here.
}
は完全なコードです:
protected List<FacebookPermissionRequest> CheckPermissions(Dictionary<string, FacebookPermissionRequest> RequiredPermissions)
{
var access_token = HttpContext.Items["access_token"].ToString();
if (!string.IsNullOrEmpty(access_token))
{
var appsecret_proof = access_token.GenerateAppSecretProof();
var fb = new FacebookClient(access_token);
IEnumerable<FacebookPermissionRequest> MissingPermissions =
new List<FacebookPermissionRequest>(); //initialize to an empty list
if (MissingPermissions != null)
{
//create an array of Facebook Batch Parameters based on list of RequiredPermission
FacebookBatchParameter[] fbBatchParameters =
new FacebookBatchParameter[RequiredPermissions.Values.Count()];
int idx = 0;
foreach (FacebookPermissionRequest required_permssion in
RequiredPermissions.Values)
{
fbBatchParameters[idx] = new FacebookBatchParameter
{
HttpMethod = HttpMethod.Get,
Path = string.Format("{0}{1}",
"me/permissions/",
required_permssion.permision_scope_value)
.GraphAPICall(appsecret_proof)
};
required_permssion.granted = false; //initalize all granted indicators to false for each required permission
idx++;
}
dynamic permission_Batchresult = fb.Batch(
fbBatchParameters
);
if (permission_Batchresult != null)
{
List<PermissionResults> result = JsonConvert.
DeserializeObject<List<PermissionResults>>
(permission_Batchresult.ToString());
foreach (FacebookPermissionModel permissionResult in
result.SelectMany(x => x.data).Where(y => y.status == "granted"))
{
RequiredPermissions[permissionResult.permission].granted = true; // the error comes from here.
}
MissingPermissions = RequiredPermissions.Values.
Where(p => p.granted == false);
}
}
return MissingPermissions.ToList();
}
else
throw new HttpException(404, "Missing Access Token");
}
私はコードがエラーをスローどこ指摘したコードを見て@TimSchmelter。はい、私はそれをデバッグし、両方の値が表示されました – Newbie
あなたはstackoverflow上で他の質問を読んでいるので、私はすでにあなたが 'ContainsKey'などでこの栄誉を避ける方法を知っていると思います。辞書のキーとして存在しますか? –
不足している権限を見つけるために、付与されていない権限 – Newbie