2015-11-17 5 views
1

Il existe actuellement deux types de signature. on est à travers le répertoire actif, et je suis en mesure d'obtenir l'identité des revendications de l'utilisateur.Identité des revendications de l'utilisateur

le second est par formulaire d'inscription personnalisé, même que je peux obtenir des réclamations de infomration de l'utilisateur en utilisant ce code ci-dessous:

foreach (Microsoft.IdentityModel.Claims.Claim claim in identity.Claims) 
{ 
    Console.Write("Type: " + claim.type); 
} 

Sortie:

claimtype=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress 
[email protected] 

Le problème que j'ai est, je suis essayer d'obtenir des valeurs des revendications de registre personnalisé, puis enregistrez-le dans la table utilisateur, en utilisant le code ci-dessous, mais pas de chance

var myemail = identity.Claims.First(c => c.ClaimType == "EmailAddress").Value; 

erreur dit:

"séquence ne contient aucun élément"

Répondre

1

Le type de réclamation est

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress 

pas le EmailAddress. Si vous ne voulez pas répéter le type entier, utilisez ClaimTypes.Email:

var myemail = identity.Claims.First(c => c.ClaimType == ClaimTypes.Email).Value 

Votre erreur indique alors qu'il n'y a aucune revendication de type EmailAddress qui est correct. Ensuite, vous essayez de prendre le premier élément de la collection vide et vous obtenez l'exception réelle.

+0

Oui, j'ai aussi essayé et rien ne s'affiche à l'écran comme si le type de revendication n'existait pas. ceci est seulement une erreur dans le "formulaire personnalisé d'enregistrement d'utilisateur" son comme si il ne reconnaît pas la réclamation ou le formulaire de connexion personnalisé sont traités différemment? sont-ils? la chose étrange est, je peux voir toutes les informations de réclamations quand je boucle juste les réclamations entières. réclamation – NULL

+0

@Menew: Je n'ai aucune idée puisque vous n'avez pas fourni assez de détails sur ce formulaire personnalisé. Cette réponse répond à votre problème particulier que vous avez posé dans votre question. Je suppose que si cette réponse correcte conduit à d'autres problèmes, vous devez accepter cette réponse, mais créer une autre question avec des détails sur votre formulaire personnalisé et comment vous pouvez éventuellement fuir les réclamations. –

+0

merci. cette affirmation est un peu confuse. – NULL