MessageHeaderAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica che un membro dati è un'intestazione di messaggio 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
- Ereditarietà
- Derivato
- Attributi
Esempio
Nell'esempio di codice seguente viene illustrato come utilizzare MessageHeaderAttribute per creare un'intestazione SOAP per il messaggio di risposta le cui proprietà Name, Namespace e MustUnderstand sono impostate su valori appropriati per tale intestazione. L'esempio di codice è seguito da un esempio del messaggio quando viene inviato.
[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
Commenti
L'attributo MessageHeaderAttribute consente di associare campi e proprietà di un tipo contrassegnato con l'attributo MessageContractAttribute alle intestazioni di messaggio SOAP. Il tipo del campo o della proprietà può essere semplice o composito, purché serializzabile.
Per informazioni sul controllo della serializzazione del contenuto di un corpo SOAP senza modificare la busta SOAP predefinita, vedere System.Runtime.Serialization.DataContractAttribute, Specifica del trasferimento dei dati nei contratti di servizio e Uso di contratti dati.
Per altre informazioni sulla creazione di contratti di messaggio, vedere Uso di contratti messaggio.
Lo standard SOAP definisce gli attributi che possono esistere in un'intestazione. Tali attributi sono:
Actor
oRole
(Actor
in SOAP 1.1,Role
in SOAP 1.2)MustUnderstand
Relay
L'attributo Actor
o Role
specifica l'URI del nodo per cui è prevista una determinata intestazione. L'attributo MustUnderstand
specifica se l'intestazione riconosce l'elaborazione del nodo. L'attributo Relay
specifica se l'intestazione deve essere inoltrata ai nodi downstream. Windows Communication Foundation (WCF) non esegue alcuna elaborazione di questi attributi nei messaggi in ingresso, ad eccezione dell'attributoMustUnderstand
.
Questi attributi possono tuttavia essere letti e modificati, anche se non sono inviati per impostazione predefinita. I valori di questi attributi possono essere impostati in due modi. Il primo modo consiste nel modificare le proprietà Actor, MustUnderstand e Relay dell'attributo MessageHeaderAttribute. (Non Role
esiste alcuna proprietà : impostare la Actor proprietà e Role
viene passata se viene usato SOAP 1.2). Ad esempio:
Il secondo modo per controllare questi attributi è impostare il parametro di tipo della classe MessageHeader<T> sul tipo di intestazione desiderato e quindi utilizzare il tipo ottenuto insieme all'attributo MessageHeaderAttribute. Infine, utilizzare a livello di programmazione le proprietà dell'intestazione MessageHeader<T> per impostare gli attributi SOAP. Ad esempio:
Se si utilizza sia il meccanismo di controllo dinamico sia quello statico, le impostazioni statiche rappresentano le impostazioni predefinite. In questo caso è tuttavia possibile ignorarle mediante il meccanismo dinamico. Ad esempio:
È consentito creare intestazioni ripetute dotate del controllo dinamico degli attributi. Ad esempio:
[MessageHeaderArray] public MessageHeader<Person> documentApprovers[];
Sul lato ricevente, la lettura di questi attributi SOAP può essere eseguita solo se si utilizza la classe MessageHeader<T> generica. Per individuare le impostazioni degli attributi del messaggio ricevuto è possibile esaminare le proprietà Actor, Relay o MustUnderstand di un'intestazione di tipo MessageHeader<T>.
Quando si riceve un messaggio e quindi lo si invia nuovamente all'origine, il roundtrip delle impostazioni degli attributi SOAP viene eseguito solo per le intestazioni di tipo MessageHeader<T>.
Costruttori
MessageHeaderAttribute() |
Inizializza una nuova istanza della classe MessageHeaderAttribute. |
Proprietà
Actor |
Consente di ottenere o impostare un URI che indica il nodo a cui è indirizzata questa intestazione. Tale URI è associato all'attributo di intestazione Role quando si utilizza SOAP 1.2 e all'attributo di intestazione Actor quando si utilizza SOAP 1.1. |
HasProtectionLevel |
Quando viene sottoposto a override in una classe derivata, consente di ottenere un valore che indica se al membro è stato assegnato un livello di protezione. (Ereditato da MessageContractMemberAttribute) |
MustUnderstand |
Specifica se è necessario che il nodo che svolge il ruolo Actor riconosca questa intestazione. Questa proprietà è associata all'attributo di intestazione SOAP |
Name |
Specifica il nome dell'elemento che corrisponde a questo membro. (Ereditato da MessageContractMemberAttribute) |
Namespace |
Specifica lo spazio dei nomi dell'elemento che corrisponde a questo membro. (Ereditato da MessageContractMemberAttribute) |
ProtectionLevel |
Specifica se il membro deve essere trasmesso senza alcuna protezione, solo firmato oppure firmato e crittografato. (Ereditato da MessageContractMemberAttribute) |
Relay |
Specifica se per questa intestazione è necessario eseguire il relaying ai nodi downstream. Questa proprietà è associata all'attributo di intestazione SOAP |
TypeId |
Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
Metodi
Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
GetHashCode() |
Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsDefaultAttribute() |
In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) |
Match(Object) |
Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute) |