ServiceBehaviorAttribute.IgnoreExtensionDataObject Proprietà

Definizione

Ottiene o imposta un valore che specifica se inviare i dati di serializzazione sconosciuti in transito.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

Valore della proprietà

true se i dati di serializzazione sconosciuti non vengono mai inviati; in caso contrario, false.true if unknown serialization data is never sent; otherwise, false. Il valore predefinito è false.The default is false.

Esempi

Nell'esempio seguente viene illustrato l'utilizzo della proprietà IgnoreExtensionDataObject e un'implementazione dell'interfaccia IExtensibleDataObject.The following example shows the use of IgnoreExtensionDataObject and an implementation of IExtensibleDataObject. In questo esempio, con IgnoreExtensionDataObject impostata su false, i dati aggiuntivi noti al client eseguono una sequenza di andata e ritorno al 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
  }
}

Commenti

Se un tipo implementa l' IExtensibleDataObject interfaccia, archivia eventuali dati aggiuntivi che non sono in grado di ricevere in transito durante la deserializzazione in tale tipo.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. Ad esempio, se un tipo Person possiede i membri FirstName e LastName e perviene un elemento denominato PhoneNumber, questo viene memorizzato.For example, if a type Person has members FirstName and LastName, and an element called PhoneNumber comes in, it is stored. Quando viene in seguito eseguita la serializzazione del tipo, PhoneNumber verrà emesso di nuovo.When later serializing the type, PhoneNumber will be re-emitted. Il problema è che lo schema per Person esportato dal servizio dispone FirstName solo LastNamedi e, pertanto Windows Communication Foundation (WCF) genera un'istanza non valida dello schema.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! Se è importante una rigorosa conformità allo schema, è possibile impostare IgnoreExtensionDataObject su true per disattivare questo comportamento di riemissione.If strict schema compliance is important, you can set IgnoreExtensionDataObject to true to turn this re-emitting behavior off.

Indipendentemente IgnoreExtensionDataObject dall'impostazione, WCF elabora sempre i dati noti (sia in entrata che in uscita) e non genera eccezioni quando si verificano dati aggiuntivi.Regardless IgnoreExtensionDataObject setting, WCF always processes known data (both in and out) and does not throw exceptions when extra data comes in. È inoltre possibile impostare questa proprietà utilizzando l' <elemento> DataContractSerializer in un file di configurazione dell'applicazione.You can also set this property using the <dataContractSerializer> element in an application configuration file.

Si applica a