ServiceBehaviorAttribute.IgnoreExtensionDataObject Propriété

Définition

Obtient ou définit une valeur indiquant si des données de sérialisation inconnues doivent être envoyées sur le réseau.Gets or sets a value that specifies whether to send unknown serialization data onto the wire.

public:
 property bool IgnoreExtensionDataObject { bool get(); void set(bool value); };
public bool IgnoreExtensionDataObject { get; set; }
member this.IgnoreExtensionDataObject : bool with get, set
Public Property IgnoreExtensionDataObject As Boolean

Valeur de propriété

true si les données de sérialisation inconnues ne sont jamais envoyées ; sinon false.true if unknown serialization data is never sent; otherwise, false. La valeur par défaut est false.The default is false.

Exemples

L'exemple suivant illustre l'utilisation de IgnoreExtensionDataObject et une implémentation de IExtensibleDataObject.The following example shows the use of IgnoreExtensionDataObject and an implementation of IExtensibleDataObject. Dans cet exemple, comme IgnoreExtensionDataObject a la valeur false, les données supplémentaires connues par le client font l'objet d'un aller-retour vers le client.In this sample, with IgnoreExtensionDataObject set to false, the extra data that the client knows about is round-tripped back to the client.

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Xml;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace = "http://microsoft.wcf.documentation")]
  public interface ISampleService{
    [OperationContract]
    Person SampleMethod(Person personParam);
  }

  [DataContract(Name="OriginalPerson", Namespace="http://microsoft.wcf.documentation")]
  public class Person : IExtensibleDataObject
  {
    [DataMember]
    public string firstName;
    [DataMember]
    public string lastName;
    [DataMember]
    public string Message;
    [DataMember]
    public XmlNode[] Blob;

    #region IExtensibleDataObject Members
    private ExtensionDataObject data = null;

    public ExtensionDataObject ExtensionData
    {
      get
      {
        return this.data;
      }
      set
      {
        this.data = value;
      }
    }
    #endregion
  }

  [ServiceBehaviorAttribute(
    IgnoreExtensionDataObject=false, 
    ValidateMustUnderstand=false
  )]
  class SampleService : ISampleService
  {
  #region ISampleService Members
    public Person SampleMethod(Person msg)
    {
      Console.WriteLine(msg.firstName);
      Console.WriteLine(msg.lastName);
      Console.WriteLine(msg.Message);

      msg.lastName = "First Name";
      msg.firstName = "Last Name";
      msg.Message = "This is the Reply message.";
        return msg;
    }
  #endregion
  }
}

Remarques

Si un type implémente l' IExtensibleDataObject interface, il stocke toutes les données supplémentaires qu’il ne connaît pas sur le réseau lors de la désérialisation dans ce type.If a type implements the IExtensibleDataObject interface, it stores any extra data it doesn't know about that comes over the wire when deserializing into that type. Par exemple, si un type Person contient des membres FirstName et LastName et un élément appelé PhoneNumber apparaît, il est stocké.For example, if a type Person has members FirstName and LastName, and an element called PhoneNumber comes in, it is stored. Lors de la sérialisation ultérieure du type, PhoneNumber est mis à nouveau.When later serializing the type, PhoneNumber will be re-emitted. Le problème est que le schéma pour Person exporté par ce service n’a FirstName que LastNameet, donc Windows Communication Foundation (WCF) génère une instance de schéma non valide!The problem is that the schema for Person exported by that service only has FirstName and LastName, so Windows Communication Foundation (WCF) generates a schema-invalid instance! Si la stricte conformité du schéma est primordiale, vous pouvez définir IgnoreExtensionDataObject sur true pour désactiver ce comportement d'émission réitérée.If strict schema compliance is important, you can set IgnoreExtensionDataObject to true to turn this re-emitting behavior off.

Quelle IgnoreExtensionDataObject que soit la valeur définie, WCF traite toujours les données connues (à la fois en entrée et en sortie) et ne lève pas d’exceptions lors de l’entrée de données supplémentaires.Regardless IgnoreExtensionDataObject setting, WCF always processes known data (both in and out) and does not throw exceptions when extra data comes in. Vous pouvez également définir cette propriété à l' <aide> de l’élément DataContractSerializer dans un fichier de configuration de l’application.You can also set this property using the <dataContractSerializer> element in an application configuration file.

S’applique à