MessageHeaderAttribute MessageHeaderAttribute MessageHeaderAttribute MessageHeaderAttribute Class

Определение

Указывает, что член данных является заголовком сообщения SOAP.Specifies that a data member is a SOAP message header.

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

Примеры

В следующем примере кода показано использование атрибута MessageHeaderAttribute для создания заголовка SOAP для ответного сообщения с помощью свойств Name, Namespace и MustUnderstand, которым присвоены значения, соответствующие этому заголовку.The following code example shows the use of the MessageHeaderAttribute to create a SOAP header for the response message with the Name, Namespace and MustUnderstand properties set to values appropriate for this header. После примера кода следует пример отправки сообщения.The code example is followed by an example of the message when sent.

 [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.The MessageHeaderAttribute attribute allows you to map fields and properties of a type marked with the MessageContractAttribute attribute to SOAP message headers. Поле или свойство может принадлежать к простому или составному типу, который можно сериализовать.The field or property can be of a simple type or a composite type that can be serialized.

Сведения об управлении сериализацией содержимого текста SOAP без изменения самого конверта SOAP по умолчанию см. в разделе System.Runtime.Serialization.DataContractAttribute, Указание передача данных в контрактах служби использование контрактов данных.For information on controlling the serialization of the contents of a SOAP body without modifying the default SOAP envelope itself, see System.Runtime.Serialization.DataContractAttribute, Specifying Data Transfer in Service Contracts, and Using Data Contracts.

Дополнительные сведения о создании контрактов сообщений см. в разделе Использование контрактов сообщений.For more information about creating message contracts, see Using Message Contracts.

В стандарте SOAP определены следующие атрибуты, которые могут присутствовать в заголовке.The SOAP standard defines the following attributes that can exist on a header:

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

  • MustUnderstand

  • Relay

Атрибут Actor или Role задает универсальный код ресурса (URI) узла, для которого предназначен данный заголовок.The Actor or Role attribute specifies the URI of the node for which a given header is intended. Атрибут MustUnderstand указывает, должен ли заголовок поддерживать обработку узла.The MustUnderstand attribute specifies whether the header understands the node processing. Атрибут Relay указывает, надо ли передавать заголовок на нижележащие узлы.The Relay attribute specifies whether the header is to be relayed to downstream nodes. Windows Communication Foundation (WCF) не выполняет обработку этих атрибутов для входящих сообщений, за исключением MustUnderstand атрибута.Windows Communication Foundation (WCF) does not perform any processing of these attributes on incoming messages, except for the MustUnderstand attribute.

Однако эти атрибуты можно считать и записать, даже если они не отправлены по умолчанию.You can, however, read and write these attributes, even though they are not sent by default. Задать значения для атрибута можно двумя способами.You can set the attribute values in two ways. Первый способ заключается в изменении свойств Actor, MustUnderstand и Relay атрибута MessageHeaderAttribute.First, you can change the Actor, MustUnderstand and Relay properties on the MessageHeaderAttribute. (Свойство — не Role Actor устанавливает свойство и Role передается, если используется SOAP 1,2).(There is no Role property - set the Actor property and Role is passed if SOAP 1.2 is used). Например:For example:

Второй способ управления этими атрибутами заключается в изменении требуемого типа заголовка на параметр типа класса MessageHeader<T> и использовании полученного типа вместе с атрибутом MessageHeaderAttribute.The second way to control these attributes is by making the desired header type the type parameter of the MessageHeader<T> class and using the resulting type together with the MessageHeaderAttribute. Затем используйте свойства MessageHeader<T> программными средствами, чтобы задать атрибуты SOAP.Then use the MessageHeader<T> properties programmatically to set the SOAP attributes. Например:For example:

Если используются и динамический, и статический механизмы управления, статические параметры используются по умолчанию, однако могут позднее быть переопределены с помощью динамического механизма.If both the dynamic and the static control mechanisms are used, the static settings are the default but can be overridden using the dynamic mechanism. Например:For example:

Допускается создание повторяющихся заголовков с динамическим управлением атрибутами.Creating repeated headers with dynamic attribute control is allowed. Например:For example:

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

На получающей стороне чтение этих атрибутов SOAP возможно только при использовании универсального класса MessageHeader<T>.On the receiving side, reading these SOAP attributes can only be done if the generic MessageHeader<T> class is used. Для определения параметров атрибутов полученного сообщения проверьте свойства Actor, Relay или MustUnderstand заголовка, принадлежащего к типу MessageHeader<T>.Examine the Actor, Relay or MustUnderstand properties of a header of the MessageHeader<T> type to discover the attribute settings on the received message.

При получении сообщения и последующей отправке его обратно круговой путь совершают только параметры атрибутов SOAP для заголовков, принадлежащих к типу MessageHeader<T>.When a message is received and then sent back, the SOAP attribute settings only roundtrip for headers of the MessageHeader<T> type.

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

MessageHeaderAttribute() MessageHeaderAttribute() MessageHeaderAttribute() MessageHeaderAttribute()

Инициализирует новый экземпляр класса MessageHeaderAttribute.Initializes a new instance of the MessageHeaderAttribute class.

Свойства

Actor Actor Actor Actor

Возвращает или задает универсальный код ресурса (URI), указывающий узел, на который нацелен заголовок.Gets or sets a URI that indicates the node at which this header is targeted. Сопоставляется с атрибутом заголовка Role при использовании SOAP 1.2 и с атрибутом заголовка Actor при использовании SOAP 1.1.Maps to the role header attribute when SOAP 1.2 is used and the actor header attribute when SOAP 1.1 is used.

HasProtectionLevel HasProtectionLevel HasProtectionLevel HasProtectionLevel

При переопределении в производном классе возвращает значение, указывающее наличие у члена примененного уровня защиты.When overridden in a derived class, gets a value that indicates whether the member has a protection level assigned.

(Inherited from MessageContractMemberAttribute)
MustUnderstand MustUnderstand MustUnderstand MustUnderstand

Указывает, должен ли узел, выступающий в роли Actor, понимать этот заголовок.Specifies whether the node acting in the Actor role must understand this header. Сопоставляется с атрибутом заголовка SOAP mustUnderstand.This is mapped to the mustUnderstand SOAP header attribute.

Name Name Name Name

Задает имя элемента, соответствующего этому члену.Specifies the name of the element that corresponds to this member.

(Inherited from MessageContractMemberAttribute)
Namespace Namespace Namespace Namespace

Задает пространство имен элемента, соответствующего этому члену.Specifies the namespace of the element that corresponds to this member.

(Inherited from MessageContractMemberAttribute)
ProtectionLevel ProtectionLevel ProtectionLevel ProtectionLevel

Задает значение, указывающее, должен ли член передаваться «как есть», подписанным или подписанным и зашифрованным.Specifies whether the member is to be transmitted as-is, signed, or signed and encrypted.

(Inherited from MessageContractMemberAttribute)
Relay Relay Relay Relay

Указывает, должен ли этот заголовок ретранслироваться на следующие узлы.Specifies whether this header is to be relayed to downstream nodes. Сопоставляется с атрибутом заголовка SOAP relay.This is mapped to the relay SOAP header attribute.

TypeId TypeId TypeId TypeId

При реализации в производном классе возвращает уникальный идентификатор для этого Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Возвращает значение, показывающее, равен ли экземпляр указанному объекту.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Возвращает хэш-код данного экземпляра.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

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

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

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