ServiceBehaviorAttribute.IgnoreExtensionDataObject Propiedad

Definición

Obtiene o establece un valor que especifica si enviar o no datos de serialización desconocidos hacia la conexión.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

Valor de propiedad

true si nunca se envían datos de serialización desconocidos; de lo contrario, false.true if unknown serialization data is never sent; otherwise, false. De manera predeterminada, es false.The default is false.

Ejemplos

En el siguiente ejemplo se muestra el uso de IgnoreExtensionDataObject y una implementación de IExtensibleDataObject.The following example shows the use of IgnoreExtensionDataObject and an implementation of IExtensibleDataObject. En este ejemplo, con IgnoreExtensionDataObject establecido como false, los datos adicionales que el cliente conoce regresan al cliente después de un viaje de ida y vuelta (round trip).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
  }
}

Comentarios

Si un tipo implementa la IExtensibleDataObject interfaz, almacena los datos adicionales que no conoce sobre la conexión al deserializar en ese 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. Por ejemplo, si un tipo Person tiene miembros FirstName y LastName, y entra un elemento llamado PhoneNumber, se almacena.For example, if a type Person has members FirstName and LastName, and an element called PhoneNumber comes in, it is stored. Al serializar después el tipo, se remitirá PhoneNumber.When later serializing the type, PhoneNumber will be re-emitted. El problema es que el esquema para Person exportado por ese servicio FirstName solo LastNametiene y, por lo que Windows Communication Foundation (WCF) genera una instancia de esquema no válida.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 compatibilidad del esquema estricta es importante, puede establecer IgnoreExtensionDataObject como true para desactivar este comportamiento de reemisión.If strict schema compliance is important, you can set IgnoreExtensionDataObject to true to turn this re-emitting behavior off.

Independientemente IgnoreExtensionDataObject de la configuración, WCF siempre procesa los datos conocidos (tanto dentro como fuera) y no inicia excepciones cuando entran datos adicionales.Regardless IgnoreExtensionDataObject setting, WCF always processes known data (both in and out) and does not throw exceptions when extra data comes in. También puede establecer esta propiedad mediante el <elemento dataContractSerializer> en un archivo de configuración de la aplicación.You can also set this property using the <dataContractSerializer> element in an application configuration file.

Se aplica a