ServiceBehaviorAttribute.IgnoreExtensionDataObject Eigenschap

Definitie

Hiermee wordt een waarde opgehaald of ingesteld waarmee wordt aangegeven of onbekende serialisatiegegevens naar de kabel moeten worden verzonden.

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

Waarde van eigenschap

true als onbekende serialisatiegegevens nooit worden verzonden; anders, false. De standaardwaarde is false.

Voorbeelden

In het volgende voorbeeld ziet u het gebruik van IgnoreExtensionDataObject en een implementatie van IExtensibleDataObject. In dit voorbeeld, waarbij IgnoreExtensionDataObject deze is ingesteld op false, worden de extra gegevens die de client kent, teruggezet naar de 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
  }
}

Opmerkingen

Als een type de IExtensibleDataObject interface implementeert, worden eventuele extra gegevens opgeslagen die niet bekend zijn over de kabel wanneer het in dat type wordt gedeserialiseerd. Als een type Person bijvoorbeeld leden FirstName bevat en LastNameeen element dat wordt aangeroepen PhoneNumber , wordt het opgeslagen. Wanneer u het type later serialiseert, PhoneNumber wordt het opnieuw verzonden. Het probleem is dat het schema voor Person geƫxporteerd door die service alleen FirstName en LastName heeft, dus Windows Communication Foundation (WCF) genereert een schema-ongeldig exemplaar! Als strikte schemanaleving belangrijk is, kunt u instellen IgnoreExtensionDataObject dat true dit gedrag voor opnieuw verzenden wordt uitgeschakeld.

IgnoreExtensionDataObject Ongeacht de instelling verwerkt WCF altijd bekende gegevens (zowel in als uit) en genereert geen uitzonderingen wanneer er extra gegevens binnenkomen. U kunt deze eigenschap ook instellen met behulp van het <dataContractSerializer-element> in een toepassingsconfiguratiebestand.

Van toepassing op