Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo IClientMessageInspector.BeforeSendRequest (Message, IClientChannel)

 

Consente di controllare o modificare un messaggio prima che venga inviato un messaggio di richiesta a un servizio.

Spazio dei nomi:   System.ServiceModel.Dispatcher
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

object BeforeSendRequest(
	ref Message request,
	IClientChannel channel
)

Parametri

request
Type: System.ServiceModel.Channels.Message

Il messaggio da inviare al servizio.

channel
Type: System.ServiceModel.IClientChannel

Il canale dell'oggetto client WCF.

Valore restituito

Type: System.Object

L'oggetto restituito come argomento correlationState del metodo AfterReceiveReply. Risulta uguale a null se non vengono utilizzati stati di correlazione.

La procedura consigliata è di trasformarlo in una struttura System.Guid per garantire che non ci siano due oggetti correlationState uguali.

Implementare il metodo BeforeSendRequest per controllare o modificare un messaggio di richiesta prima che venga inviato.

Nell'esempio di codice seguente viene visualizzata un'implementazione che scrive stringhe sulla console quando viene chiamata.

#region IClientMessageInspector Members
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
  Console.WriteLine("IClientMessageInspector.AfterReceiveReply called.");
  Console.WriteLine("Message: {0}", reply.ToString());
}

public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
  Console.WriteLine("IClientMessageInspector.BeforeSendRequest called.");
  return null;
}

Nell'esempio di codice seguente viene illustrato come utilizzare un System.ServiceModel.Description.IEndpointBehavior per inserire il controllo di messaggio del client nell'endpoint client.

#region IEndpointBehavior Members
public void AddBindingParameters(
  ServiceEndpoint endpoint, BindingParameterCollection bindingParameters
) { return; }

public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
  clientRuntime.MessageInspectors.Add(new Inspector());
  foreach (ClientOperation op in clientRuntime.Operations)
    op.ParameterInspectors.Add(new Inspector());
}

public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
  endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new Inspector());
  foreach (DispatchOperation op in endpointDispatcher.DispatchRuntime.Operations)
    op.ParameterInspectors.Add(new Inspector());
}

public void Validate(ServiceEndpoint endpoint){ return; }

Nell'esempio di codice seguente viene infine mostrata la procedura per modificare il file di configurazione del client in modo da utilizzare il comportamento dell'endpoint tramite un determinato endpoint.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.0
Portable Class Library
Supportato in: portable .NET platforms
Silverlight
Disponibile da 4.0
Torna all'inizio
Mostra: