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.
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