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 |
Name |
Задает имя элемента, соответствующего этому члену. (Унаследовано от MessageContractMemberAttribute) |
Namespace |
Задает пространство имен элемента, соответствующего этому члену. (Унаследовано от MessageContractMemberAttribute) |
ProtectionLevel |
Задает значение, указывающее, должен ли член передаваться "как есть", подписанным или подписанным и зашифрованным. (Унаследовано от MessageContractMemberAttribute) |
Relay |
Указывает, должен ли этот заголовок ретранслироваться на следующие узлы. Сопоставляется с атрибутом заголовка SOAP |
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) |