2009-10-14 12 views
1

J'ai essayé de déplacer WCF à NetDataContractSerializer en utilisant le code dans ce post: http://lunaverse.wordpress.com/2007/05/09/remoting-using-wcf-and-nhibernateutilisant NetDataContractSerializer lance une exception sur le côté client

et en ajoutant ce code sur le côté client:

foreach (OperationDescription desc in factory.Endpoint.Contract.Operations) 
    { 
     DataContractSerializerOperationBehavior dcsOperationBehavior = desc.Behaviors.Find<DataContractSerializerOperationBehavior>(); 
     if (dcsOperationBehavior != null) 
     { 
      int idx = desc.Behaviors.IndexOf(dcsOperationBehavior); 
      desc.Behaviors.Remove(dcsOperationBehavior); 
      desc.Behaviors.Insert(idx, new NetDataContractOperationBehavior(desc)); 
      //return true; 

     }    
    } 

Mais Eevry temps je ivoke mon appel List, je reçois cette exception:

le formateur a levé une exception en essayant de désérialiser le message: Il y avait une erreur en essayant de désérialiser le paramètre http://tempuri.org/:ListResult. Le message InnerException était 'Le désérialiseur ne peut pas charger le type à désérialiser car le type' System.Collections.Generic.List`1 [[MYPROJ.Framework.Entities.EntityBase, MYPROJ.Framework.Entities, Version = 1.0.0.0, Culture = neutre , PublicKeyToken = null]] 'n'a pas pu être trouvé dans l'assembly' mscorlib, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089 '. Vérifiez que le type en cours de sérialisation a le même contrat que le type en cours de désérialisation et que le même assemblage est utilisé. '. S'il vous plaît voir InnerException pour plus de détails.

Le InnerExcption:

Le désérialiseur ne peut pas charger le type désérialiser parce que le type « [[System.Collections.Generic.List`1 MYPROJ.Framework.Entities.EntityBase, MYPROJ.Framework.Entities, Version = 1.0 .0.0, Culture = neutre, PublicKeyToken = null]] 'introuvable dans assembly' mscorlib, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089 '. Vérifiez que le type en cours de sérialisation a le même contrat que le type en cours de désérialisation et que le même assemblage est utilisé.

Le proxy est généré en utilisant svcutils avec ce drapeau: /ct:System.Collections.Generic.List`1 afin que les listes de l'autre côté ne se transforment pas en tableaux.

Le type que le deseriliezer regardant est défini dans le serveur. toutes les entités sont dérivées de ce type, mais ce n'est pas l'espace de noms du proxy qui réside dans le côté client. Utilisation Le sérialiseur par défaut standard pour WCF fonctionne correctement (il existe d'autres problèmes impliquant l'utilisation de références circulaires qui m'incitent à essayer un sérialiseur différent). Des idées?

Merci, Dani

+0

Qu'est-ce qui m'interpelle, c'est pourquoi il cherche mon type dans l'assemblage mscorlib et pas dans l'un des miens? Je pense que c'est ce qui cause le problème ... – Dani

+0

Ok ... J'ai trouvé un article MSFT qui dit que vous ne pouvez pas utiliser ce sérialiseur avec svcutils, seulement avec une DLL partagée !!! – Dani

Répondre

Questions connexes