MessageHeaderAttribute Класс

Определение

Указывает, что член данных является заголовком сообщения SOAP.

public ref class MessageHeaderAttribute : System::ServiceModel::MessageContractMemberAttribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)]
public class MessageHeaderAttribute : System.ServiceModel.MessageContractMemberAttribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, Inherited=false)]
public class MessageHeaderAttribute : System.ServiceModel.MessageContractMemberAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)>]
type MessageHeaderAttribute = class
    inherit MessageContractMemberAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, Inherited=false)>]
type MessageHeaderAttribute = class
    inherit MessageContractMemberAttribute
Public Class MessageHeaderAttribute
Inherits MessageContractMemberAttribute
Наследование
Производный
Атрибуты

Примеры

В следующем примере кода показано использование атрибута MessageHeaderAttribute для создания заголовка SOAP для ответного сообщения с помощью свойств Name, Namespace и MustUnderstand, которым присвоены значения, соответствующие этому заголовку. После примера кода следует пример отправки сообщения.

 [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 HelloResponseMessage
    Private localResponse As String = String.Empty
    Private extra As String = String.Empty

    <MessageBodyMember(Name := "ResponseToGreeting", Namespace := "http://www.examples.com")> _
    Public Property Response() As String
      Get
          Return localResponse
      End Get
      Set(ByVal value As String)
          localResponse = value
      End Set
    End Property

    <MessageHeader(Name := "OutOfBandData", Namespace := "http://www.examples.com", MustUnderstand:=True)> _
    Public Property ExtraValues() As String
      Get
          Return extra
      End Get
      Set(ByVal value As String)
          Me.extra = value
      End Set
    End Property

'   
'    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>
'      </s:Body>    
'    </s:Envelope>
'    
  End Class

Комментарии

Атрибут MessageHeaderAttribute позволяет сопоставить поля и свойства, принадлежащие к типу, отмеченному атрибутом MessageContractAttribute, с заголовками сообщений SOAP. Поле или свойство может принадлежать к простому или составному типу, который можно сериализовать.

Сведения об управлении сериализацией содержимого тела SOAP без изменения самого конверта SOAP по умолчанию см. в разделе System.Runtime.Serialization.DataContractAttribute" Указание передачи данных в контрактах службы" и "Использование контрактов данных".

Дополнительные сведения о создании контрактов сообщений см. в разделе "Использование контрактов сообщений".

В стандарте SOAP определены следующие атрибуты, которые могут присутствовать в заголовке.

  • Actor или Role (Actor в SOAP 1.1, Role в SOAP 1.2)

  • MustUnderstand

  • Relay

Атрибут Actor или Role задает универсальный код ресурса (URI) узла, для которого предназначен данный заголовок. Атрибут MustUnderstand указывает, должен ли заголовок поддерживать обработку узла. Атрибут Relay указывает, надо ли передавать заголовок на нижележащие узлы. Windows Communication Foundation (WCF) не выполняет обработку этих атрибутов в входящих сообщениях, за исключением атрибутаMustUnderstand.

Однако эти атрибуты можно считать и записать, даже если они не отправлены по умолчанию. Задать значения для атрибута можно двумя способами. Первый способ заключается в изменении свойств Actor, MustUnderstand и Relay атрибута MessageHeaderAttribute. (Свойство отсутствует Role . Задайте Actor свойство и Role передается, если используется SOAP 1.2). Пример:

Второй способ управления этими атрибутами заключается в изменении требуемого типа заголовка на параметр типа класса MessageHeader<T> и использовании полученного типа вместе с атрибутом MessageHeaderAttribute. Затем используйте свойства MessageHeader<T> программными средствами, чтобы задать атрибуты SOAP. Пример:

Если используются и динамический, и статический механизмы управления, статические параметры используются по умолчанию, однако могут позднее быть переопределены с помощью динамического механизма. Пример:

Допускается создание повторяющихся заголовков с динамическим управлением атрибутами. Пример:

[MessageHeaderArray] public MessageHeader<Person> documentApprovers[];  

На получающей стороне чтение этих атрибутов SOAP возможно только при использовании универсального класса MessageHeader<T>. Для определения параметров атрибутов полученного сообщения проверьте свойства Actor, Relay или MustUnderstand заголовка, принадлежащего к типу MessageHeader<T>.

При получении сообщения и последующей отправке его обратно круговой путь совершают только параметры атрибутов SOAP для заголовков, принадлежащих к типу MessageHeader<T>.

Конструкторы

MessageHeaderAttribute()

Инициализирует новый экземпляр класса MessageHeaderAttribute.

Свойства

Actor

Возвращает или задает универсальный код ресурса (URI), указывающий узел, на который нацелен заголовок. Сопоставляется с атрибутом заголовка Role при использовании SOAP 1.2 и с атрибутом заголовка Actor при использовании SOAP 1.1.

HasProtectionLevel

При переопределении в унаследованном классе возвращает значение, указывающее наличие у члена примененного уровня защиты.

(Унаследовано от MessageContractMemberAttribute)
MustUnderstand

Указывает, должен ли узел, выступающий в роли Actor, понимать этот заголовок. Сопоставляется с атрибутом заголовка SOAP mustUnderstand.

Name

Задает имя элемента, соответствующего этому члену.

(Унаследовано от MessageContractMemberAttribute)
Namespace

Задает пространство имен элемента, соответствующего этому члену.

(Унаследовано от MessageContractMemberAttribute)
ProtectionLevel

Задает значение, указывающее, должен ли член передаваться "как есть", подписанным или подписанным и зашифрованным.

(Унаследовано от MessageContractMemberAttribute)
Relay

Указывает, должен ли этот заголовок ретранслироваться на следующие узлы. Сопоставляется с атрибутом заголовка SOAP relay.

TypeId

В случае реализации в производном классе возвращает уникальный идентификатор для этого атрибута Attribute.

(Унаследовано от Attribute)

Методы

Equals(Object)

Возвращает значение, показывающее, равен ли экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код данного экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.

(Унаследовано от Attribute)

Применяется к