2009-08-12 8 views
0

Dans mon site Web ASP.NET, tous les appels dans la couche de données renvoient des entités en tant qu'interface et le site Web n'a pas besoin de connaître le type concret. Cela fonctionne très bien, mais j'ai rencontré un problème en essayant de stocker un de ces types dans le profil utilisateur. Mon interface implémente ISerializable, comme ce qui suit:Stockage du type d'interface dans le profil ASP.NET

public interface IInsured : IPerson, IEntity, ISerializable 

et le type de béton dans la couche de données n'implémente ISerializable. Mon profil propriété web.config est:

<add name="ActiveInsured" type="FacadeInterfaces.IInsured" serializeAs="Binary" defaultValue="[null]"/> 

Il compile très bien, mais je reçois une erreur d'exécution sur Profile.Save() disant que l'interface ne peut pas être sérialisé. Je l'ai aussi essayé avec serializeAs = "Xml". Je pensais que si mon interface implémentait ISerializable cela fonctionnerait.

Quelqu'un a déjà eu ce problème ou connaît-il une solution de contournement?

+0

J'ai eu un problème similaire avec le stockage des listes génériques dans le profil. Ma solution de contournement consistait à créer une classe héritée de la liste générique. par exemple. public class RecentlyViewed: Liste Peut-être que cela fonctionnera pour vous? –

Répondre

0

Dans le contexte d'une propriété de profil, vous devez spécifier le type à sérialiser explicitement.

Vous ne pouvez pas instancier une interface, ainsi ASP.net ne peut pas instancier une interface et l'exception mentionnée se produit.