2010-05-14 5 views
2

J'ai créé une classe ExtendedId qui s'étend GenericIdentity. (Mémorise Id ainsi que le nom)Stockage étendu IIdentity dans HttpContext.Current.User (IPrinciple)

Dans un HttpModule je stocké cet identifiant étendu dans Current.User comme ceci:

HttpContext.Current.User = new GenericPrincipal(myExtendedId, roles); 

Le problème est, plus tard, comment puis-je à mon nouveau genre ExtendedId?

Si j'essaie ceci:

ExtendedId eId = (ExtendedId)HttpContext.Current.User.Identity; 

Je reçois une erreur de casting. J'ai l'impression que je fais quelque chose de stupide ici avec le casting, mais je suis un peu brumeux ce matin.

Répondre

2

essayer

ExtendedId eid = (ExtendedId) ((GenericPrincipal) HttpContext.Current.User) .Identity;

ou

ExtendedId eid = ((GenericPrincipal) HttpContext.Current.User) .Identity comme ExtendedId;

+0

Merci pour votre aide, s'est avéré être quelque chose d'autre à la fin (voir mon article). – UpTheCreek

0

En fait, cela s'est avéré être une erreur stupide. L'incantation à ExtendedId échouait dans les cas où HttpContext.Current.User.Identity n'avait pas encore été défini sur ExtendedId (était GenericIdentity en standard). J'ai ajouté une vérification de type pour éviter cela. Désolé de perdre du temps!

Questions connexes