Nous essayons de consommer un service Web (Soap) et ont généré un adaptateur pour le schéma en utilisant SvcUtil.exe. Nous avons un champXmlSerializer avec motif spécifié ne fonctionne pas
recurrenceCount
qui ne doit pas être fourni à moins qu'il ait une valeur et nous avons donc ajouté une propriété
recurrenceCountSpecified
comme selon MSDN. Même si recurrenceCountSpecified est false, la propriété champ recurrenceCount est toujours spécifiée dans le fichier xml sortant.
Que faisons-nous de mal?
Code Adaptateur:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel","3.0.0.0")] [System.ServiceModel.ServiceContractAttribute(Namespace="http://sas.elluminate.com/", ConfigurationName ="SASDefaultAdapterV2Port")]
public interface SASDefaultAdapterV2Port
{
[System.ServiceModel.OperationContractAttribute(Action="http://sas.elluminate.com/setSession",ReplyAction = "*")]
[System.ServiceModel.FaultContractAttribute(typeof(sas.elluminate.com.ErrorResponse), Action = "http://sas.elluminate.com/setSession", Name="ErrorResponse")]
[System.ServiceModel.XmlSerializerFormatAttribute()]
sessionResponseCollection setSession(setSessionRequest request);
}
La classe est modifiée:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel","3.0.0.0")]
[System.ServiceModel.MessageContractAttribute(WrapperName="setSession", WrapperNamespace = "http://sas.elluminate.com/",IsWrapped = true)]
public partial class setSessionRequest
{
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool recurrenceCountSpecified;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://sas.elluminate.com/", Order = 19)]
public int recurrenceCount;
}
Voir aussi la question: http://stackoverflow.com/questions/1009895/svcutil-exe-proxy-generated-not-allowing-for-nullable-fields – dwarring