2010-04-01 3 views
0

J'ai un code qui construit un WCS wsdl personnalisé à la volée. Dans un scénario particulier, le fichier WSDL exporté doit utiliser XmlSerializerOperationBehavior en tant que IWsdlExportExtension par opposition au fichier DataContractSerializerOperationBehavior IWsdlExportExtension par défaut. Cependant, chaque fois que j'essaye cela à partir du code de génération WSDL, j'obtiens une exception de référence nulle de la méthode ExportBody de XmlSerializerMessageContractExporter (qui est utilisée en interne dans System.ServiceModel par la méthode XmlSerializerOperationBehavior ExportContract). Je l'ai réflectorisé et je ne vois rien d'anormal. Pour une raison quelconque, .NET ne veut pas non plus travailler avec la source pas à pas dans ce scénario ...WCF WSDL personnalisé XmlSerializerOperationBehavior

Simplement, est

var c = ContractDescription.GetContract(typeof(IMyService)); 
foreach (var op in c.Operations) 
{ 
    op.Behaviors.Remove(typeof(DataContractSerializerOperationBehavior)); 
    op.Behaviors.Insert(0, new XmlSerializerOperationBehavior(op)); 
} 

new WsdlExporter().ExportContract(c); // throws NullReferenceException 

la façon la plus simple que je peux reproduire ce que quelqu'un a des idées sur ce?

Merci beaucoup.

Répondre

0

avez-vous vérifier c n'est pas nul?

La seule autre chose que je peux penser est cette déclaration

new WsdlExporter().ExportContract(c); 

peut-être le compilier ne l'aime pas, essayez cette place

WsdlExporter wsdlImporter = new WsdlExporter() 
wsdlImporter.ExportContract(c); 

Nous avons eu des scénarios dans le passé wcf et les opérations de chaînage et la solution a été de déchaîner les appels.

+0

Je l'ai compris. Le problème est que XmlSerializerOperationBehavior lève une exception de référence NULL si XmlSerializerFormatAttribute n'est pas présent sur l'interface de ServiceContract elle-même. Avait à réflecteur le tout pour le comprendre ... – Jeff

0

Je l'ai compris. Le problème est que XmlSerializerOperationBehavior lève une exception de référence NULL si XmlSerializerFormatAttribute n'est pas présent sur l'interface de ServiceContract elle-même. Je devais réflectoriser le tout pour le comprendre ...

Questions connexes