MessageContractAttribute Klasse
TOC
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

MessageContractAttribute-Klasse

 

Definiert eine stark typisierte Klasse, die einer SOAP-Nachricht entspricht.

Namespace:   System.ServiceModel
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

System.Object
  System.Attribute
    System.ServiceModel.MessageContractAttribute

[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Struct, 
	AllowMultiple = false)]
public sealed class MessageContractAttribute : Attribute

NameBeschreibung
System_CAPS_pubmethodMessageContractAttribute()

Initialisiert eine neue Instanz der MessageContractAttribute-Klasse.

NameBeschreibung
System_CAPS_pubpropertyHasProtectionLevel

Ruft einen Wert ab, der angibt, ob die Nachricht über eine Schutzebene verfügt.

System_CAPS_pubpropertyIsWrapped

Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob der Nachrichtentext über ein Wrapperelement verfügt.

System_CAPS_pubpropertyProtectionLevel

Ruft einen Wert ab, der angibt, ob die Nachricht verschlüsselt oder signiert werden muss oder beides, oder legt diesen Wert fest.

System_CAPS_pubpropertyTypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.(Geerbt von Attribute.)

System_CAPS_pubpropertyWrapperName

Ruft den Wrapperelementnamen des Nachrichtentexts ab, oder legt ihn fest.

System_CAPS_pubpropertyWrapperNamespace

Ruft den Namespace des Nachrichtentext-Wrapperelements ab oder legt ihn fest.

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Diese API unterstützt die producto-Infrastruktur und sollte nicht direkt aus Ihrem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von Attribute.)

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von Attribute.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.(Geerbt von Attribute.)

System_CAPS_pubmethodMatch(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt einen Wert, der angibt, ob diese Instanz gleich ein angegebenen Objekt ist.(Geerbt von Attribute.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von Object.)

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.(Geerbt von Attribute.)

Verwenden Sie das MessageContractAttribute-Attribut, um die Struktur des SOAP-Umschlags für eine bestimmte Nachricht anzugeben. Der Dienst kann dann die Nachricht in Dienstvorgängen als Parameter oder Rückgabetyp verwenden. Informationen zum Steuern der Serialisierung der Inhalte eines SOAP-Texts, ohne den Standard-SOAP-Umschlag selbst zu ändern, finden Sie unter System.Runtime.Serialization.DataContractAttribute, Angeben von Datenübertragung in Dienstverträgen und Verwenden von Datenverträgen.

System_CAPS_noteHinweis

Sie können keine benutzerdefinierten Nachrichtentypen im Dienstvorgang mit regulär serialisierbaren Parametern verwenden. Verwenden Sie entweder benutzerdefinierte Nachrichtentypen oder serialisierbare Parameter, die keine Message-Objekte sind. Ausführliche Informationen finden Sie unter Angeben von Datenübertragung in Dienstverträgen.

Um einen Nachrichtenvertrag für einen Typ zu implementieren, kommentieren Sie ihn mit MessageContractAttribute, und kommentieren Sie eines oder mehrere Felder oder Eigenschaften der Klasse mit MessageBodyMemberAttribute, MessageHeaderAttribute oder MessageHeaderArrayAttribute.

System_CAPS_noteHinweis

System.ServiceModel.MessageParameterAttribute ist kein Nachrichtenvertragsattribut und kann nicht in Verbindung mit MessageContractAttribute verwendet werden.

Verwenden Sie die Action-Eigenschaft und ReplyAction-Eigenschaft, um den Wert des <Action>-Elements in der SOAP-Nachricht festzulegen.

  • Verwenden Sie die HasProtectionLevel-Eigenschaft und ProtectionLevel-Eigenschaft, um anzugeben, ob der SOAP-Nachrichtentyp über eine Schutzebene verfügt und welche dies ist.

  • Verwenden Sie die IsWrapped-Eigenschaft, um anzugeben, ob der Nachrichtentext über ein Wrapperelement verfügt; wenn dies der Fall ist, verwenden Sie die WrapperName-Eigenschaft und WrapperNamespace-Eigenschaft, um den Namen bzw. Namespace des Wrapperelements anzugeben.

Weitere Informationen finden Sie unter Verwendung von Nachrichtenverträgen.

Im folgenden Codebeispiel wird die Verwendung von MessageContractAttribute zur Steuerung der SOAP-Envelope-Struktur für die Anforderungs- und die Antwortmeldung dargestellt, sowie die Verwendung von MessageHeaderAttribute (zum Erstellen eines SOAP-Headers für die Antwortmeldung) und von MessageBodyMemberAttribute (zum Angeben des Texts für die Anforderungs- und die Antwortmeldung). Das Codebeispiel enthält ein Beispiel für jede Meldung beim Senden.

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Channels;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace = "Microsoft.WCF.Documentation")]
  interface IMessagingHello
  {
    [OperationContract(
     Action = "http://GreetingMessage/Action",
     ReplyAction = "http://HelloResponseMessage/Action"
    )]
    HelloResponseMessage Hello(HelloGreetingMessage msg);
  }

  [MessageContract]
  public class HelloResponseMessage
  {
    private string localResponse = String.Empty;
    private string extra = String.Empty;

    [MessageBodyMember(
      Name = "ResponseToGreeting",
      Namespace = "http://www.examples.com")]
    public string Response
    {
      get { return localResponse; }
      set { localResponse = value; }
    }

    [MessageHeader(
      Name = "OutOfBandData",
      Namespace = "http://www.examples.com",
      MustUnderstand=true
    )]
    public string ExtraValues
    {
      get { return extra; }
      set { this.extra = value; }
   }

   /*
    The following is the response message, edited for clarity.

    <s:Envelope>
      <s:Header>
        <a:Action s:mustUnderstand="1">http://HelloResponseMessage/Action</a:Action>
        <h:OutOfBandData s:mustUnderstand="1" xmlns:h="http://www.examples.com">Served by object 13804354.</h:OutOfBandData>
      </s:Header>
      <s:Body>
        <HelloResponseMessage xmlns="Microsoft.WCF.Documentation">
          <ResponseToGreeting xmlns="http://www.examples.com">Service received: Hello.</ResponseToGreeting>
        </HelloResponseMessage>
      </s:Body>    
    </s:Envelope>
    */
 }
  [MessageContract]
  public class HelloGreetingMessage
  {
    private string localGreeting;

    [MessageBodyMember(
      Name = "Salutations", 
      Namespace = "http://www.examples.com"
    )]
    public string Greeting
    {
      get { return localGreeting; }
      set { localGreeting = value; }
    }
  }

  /*
   The following is the request message, edited for clarity.

    <s:Envelope>
      <s:Header>
        <!-- Note: Some header content has been removed for clarity.
        <a:Action>http://GreetingMessage/Action</a:Action> 
        <a:To s:mustUnderstand="1"></a:To>
      </s:Header>
      <s:Body u:Id="_0" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <HelloGreetingMessage xmlns="Microsoft.WCF.Documentation">
          <Salutations xmlns="http://www.examples.com">Hello.</Salutations>
        </HelloGreetingMessage>
      </s:Body>
   </s:Envelope>
   */

  class MessagingHello : IMessagingHello
  {
    public HelloResponseMessage Hello(HelloGreetingMessage msg)
    {
      Console.WriteLine("Caller sent: " + msg.Greeting);
      HelloResponseMessage responseMsg = new HelloResponseMessage();
      responseMsg.Response = "Service received: " + msg.Greeting;
      responseMsg.ExtraValues = String.Format("Served by object {0}.", this.GetHashCode().ToString());
      Console.WriteLine("Returned response message.");
      return responseMsg;
    }
  }
}

Universal Windows Platform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.0
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0

Öffentliche statische (in Visual Basic freigegebene) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Zurück zum Anfang
Anzeigen:
© 2016 Microsoft