ServiceBehaviorAttribute.IgnoreExtensionDataObject Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob unbekannte Serialisierungsdaten gesendet werden sollen, oder legt ihn fest.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

Eigenschaftswert

true, wenn unbekannte Serialisierungsdaten nie gesendet werden, andernfalls false.true if unknown serialization data is never sent; otherwise, false. Die Standardeinstellung ist false.The default is false.

Beispiele

Das folgende Beispiel veranschaulicht die Verwendung von IgnoreExtensionDataObject und eine Implementierung von IExtensibleDataObject.The following example shows the use of IgnoreExtensionDataObject and an implementation of IExtensibleDataObject. In diesem Beispiel, in dem IgnoreExtensionDataObject auf false festgelegt ist, werden die zusätzlichen Daten, die dem Client bekannt sind, wieder zum Client zurückgeleitet.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
  }
}

Hinweise

Wenn ein Typ die IExtensibleDataObject -Schnittstelle implementiert, speichert er alle zusätzlichen Daten, über die er nicht weiß, dass er beim Deserialisieren in diesen Typ übertragen wird.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. Wenn der Person-Typ beispielsweise über die Member FirstName und LastName verfügt und ein Element mit der Bezeichnung PhoneNumber eingeht, wird dieses gespeichert.For example, if a type Person has members FirstName and LastName, and an element called PhoneNumber comes in, it is stored. Wenn der Typ später serialisiert wird, wird PhoneNumber erneut ausgegeben.When later serializing the type, PhoneNumber will be re-emitted. Das Problem besteht darin, dass das Person Schema für das Exportieren durch diesen FirstName Dienst LastNamenur und enthält, sodass Windows Communication Foundation (WCF) eine Schema-ungültige Instanz generiert!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! Wenn die strikte Schemaeinhaltung wichtig ist, können Sie IgnoreExtensionDataObject auf true festlegen, um dieses Verhalten der erneuten Ausgabe zu deaktivieren.If strict schema compliance is important, you can set IgnoreExtensionDataObject to true to turn this re-emitting behavior off.

Unabhängig IgnoreExtensionDataObject von der Einstellung verarbeitet WCF immer bekannte Daten (sowohl in als auch Out) und löst keine Ausnahmen aus, wenn zusätzliche Daten eingehen.Regardless IgnoreExtensionDataObject setting, WCF always processes known data (both in and out) and does not throw exceptions when extra data comes in. Sie können diese Eigenschaft auch mit dem <> DataContractSerializer -Element in einer Anwendungs Konfigurationsdatei festlegen.You can also set this property using the <dataContractSerializer> element in an application configuration file.

Gilt für: