İngilizce dilinde oku

Aracılığıyla paylaş


MessageContractAttribute Sınıf

Tanım

SOAP iletisine karşılık gelen kesin türe sahip bir sınıf tanımlar.

C#
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=false)]
public sealed class MessageContractAttribute : Attribute
Devralma
MessageContractAttribute
Öznitelikler

Örnekler

Aşağıdaki kod örneği, hem istek iletisi hem de yanıt iletisi için SOAP zarf yapısını denetlemek için öğesinin kullanımını MessageContractAttribute ve hem MessageHeaderAttribute (yanıt iletisi için bir SOAP üst bilgisi oluşturmak için) hem MessageBodyMemberAttribute de (hem isteğin hem de yanıt iletisinin gövdelerini belirtmek için) kullanımını gösterir. Kod örneği, gönderildiğinde her iletinin bir örneğini içerir.

C#
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;
    }
  }
}

Açıklamalar

MessageContractAttribute Belirli bir ileti için SOAP zarfının yapısını belirtmek için özniteliğini kullanın. Hizmetiniz daha sonra iletiyi parametre olarak kullanabilir veya hizmet işlemlerinde dönüş türü olarak kullanabilir. Varsayılan SOAP zarfını değiştirmeden SOAP gövdesinin içeriğinin seri hale getirilmesini denetleme hakkında bilgi için bkz System.Runtime.Serialization.DataContractAttribute. , Hizmet Sözleşmelerinde Veri Aktarımı Belirtme ve Veri Sözleşmelerini Kullanma.

Not

Hizmet işleminizde özel ileti türlerini normal serileştirilebilir parametrelerle kullanamazsınız. Özel ileti türleri veya nesne olmayan Message serileştirilebilir parametreler kullanın. Ayrıntılar için bkz. Hizmet Sözleşmelerinde Veri Aktarımı Belirtme.

Bir tür için ileti sözleşmesi uygulamak için, ile MessageContractAttribute açıklama ekleyin ve bir veya daha fazla sınıf alanı veya özelliğine , MessageHeaderAttributeveya MessageHeaderArrayAttributeile MessageBodyMemberAttributeek açıklama ekleyin.

Not

System.ServiceModel.MessageParameterAttribute bir ileti sözleşmesi özniteliği değildir ve ile MessageContractAttributebirlikte kullanılamaz.

SOAP iletisindeki Action öğesinin <Action> değerini belirtmek için ve ReplyAction özelliklerini kullanın.

  • HasProtectionLevel SOAP ileti türünün koruma düzeyine sahip olup olmadığını ve varsa ne olduğunu belirtmek için ve ProtectionLevel özelliklerini kullanın.

  • İleti gövdesinin IsWrapped sarmalayıcı öğesi olup olmadığını belirtmek için özelliğini kullanın ve varsa, sarmalama öğesinin WrapperName adını ve ad alanını belirtmek için ve WrapperNamespace özelliklerini kullanın.

Daha fazla bilgi için bkz. İleti Sözleşmelerini Kullanma.

Oluşturucular

MessageContractAttribute()

MessageContractAttribute sınıfının yeni bir örneğini başlatır.

Özellikler

HasProtectionLevel

İletinin koruma düzeyi olup olmadığını belirten bir değer alır.

IsWrapped

İleti gövdesinin sarmalayıcı öğesi olup olmadığını belirten bir değer alır veya ayarlar.

ProtectionLevel

İletinin şifrelenmesini, imzalanması veya her ikisini birden belirtmesi gereken bir değeri alır veya ayarlar.

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)
WrapperName

İleti gövdesinin sarmalayıcı öğesinin adını alır veya ayarlar.

WrapperNamespace

İleti gövdesi sarmalayıcı öğesinin ad alanını alır veya ayarlar.

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını belirten bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
UWP 10.0