J'ai une application bêta MVC 2 de base dans laquelle j'essaie d'implémenter des classes Identity et Principal personnalisées.Implémentation d'une identité personnalisée et d'IPrincipal dans MVC
J'ai créé mes classes qui implémentent les interfaces IIdentity et IPrincipal, les instancié puis assigné l'objet CustomPrincipal à mon objet Context.User dans Application_AuthenticateRequest de Global.asax.
Tout cela réussit et les objets ont l'air bien. Lorsque je commence à rendre les vues, les pages sont à présent défaillantes. Le premier échec est dans la vue LogoOnUserControl par défaut sur la ligne de code suivante:
[ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ]
Si je tire ceci il échoue sur une ligne « Html.ActionLink » différent du code.
L'erreur je reçois est:
Une exception de type 'System.Runtime.Serialization.SerializationException' produite dans WebDev.WebHost40.dll mais n'a pas été traité dans le code utilisateur
Informations supplémentaires: Type n'est pas résolu pour le membre 'Model.Entities.UserIdentity, Model, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null'.
Y a-t-il des propriétés supplémentaires que je dois implémenter dans mon identité afin d'utiliser une identité personnalisée dans MVC? J'ai essayé d'implémenter [Serializable()] dans la classe Identity mais cela n'a pas semblé avoir un impact.
MISE À JOUR: J'ai essayé 3-4 manières alternatives d'implémenter ceci mais échoue toujours avec la même erreur. Si j'utilise les classes GenericIdentity/GenericPrincipal directement, cela ne fait pas erreur.
GenericIdentity ident = new GenericIdentity("jzxcvcx");
GenericPrincipal princ = new GenericPrincipal(ident, null);
Context.User = princ;
Mais cela me mène nulle part depuis que je suis en train d'utiliser le CustomIdentity pour tenir quelques propriétés. Si j'implémente les interfaces IIdentity/IPrincipal ou hérite de GenericIdentity/GenericPrincipal pour mon CustomIdentity/CustomPrincipal, il échoue avec l'erreur d'origine ci-dessus.
Re: vote up ... Voyez-vous aussi un problème similaire? – Jay