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, AllowMultiple=false, Inherited=false)>]
type MessageHeaderAttribute = class
inherit MessageContractMemberAttribute
Public Class MessageHeaderAttribute
Inherits MessageContractMemberAttribute
- Наследование
- Производный
- Атрибуты
Примеры
В следующем примере кода показано использование заголовка MessageHeaderAttribute SOAP для сообщения ответа, NameNamespace а 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 вRoleSOAP 1.2)MustUnderstandRelay
Role Или Actor атрибут задает универсальный код ресурса (URI) узла, для которого предназначен заданный заголовок. Атрибут MustUnderstand указывает, понимает ли заголовок обработку узла. Атрибут Relay указывает, надо ли передавать заголовок на нижележащие узлы. Windows Communication Foundation (WCF) не выполняет обработку этих атрибутов в входящих сообщениях, за исключением атрибута MustUnderstand .
Однако эти атрибуты можно читать и записывать, даже если они не отправляются по умолчанию. Значения атрибутов можно задать двумя способами. Во-первых, вы можете изменить ActorMustUnderstand свойства и 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), указывающий узел, на который предназначен этот заголовок. Сопоставляется с атрибутом заголовка роли при использовании SOAP 1.2 и атрибутом заголовка субъекта при использовании SOAP 1.1. |
| HasProtectionLevel |
При переопределении в производном классе получает значение, указывающее, назначен ли член на уровне защиты. (Унаследовано от MessageContractMemberAttribute) |
| MustUnderstand |
Указывает, должен ли узел, действующий в Actor роли, понимать этот заголовок. Это сопоставляется с атрибутом заголовка |
| Name |
Указывает имя элемента, соответствующего этому элементу. (Унаследовано от MessageContractMemberAttribute) |
| Namespace |
Указывает пространство имен элемента, соответствующего этому элементу. (Унаследовано от MessageContractMemberAttribute) |
| ProtectionLevel |
Указывает, должен ли член передаваться as-is, подписан или подписан и зашифрован. (Унаследовано от MessageContractMemberAttribute) |
| 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) |