Funzione WsSendFaultMessageForError (webservices.h)

Invia un messaggio di errore dato un oggetto WS_ERROR .

Sintassi

HRESULT WsSendFaultMessageForError(
  [in]           WS_CHANNEL             *channel,
  [in]           WS_MESSAGE             *replyMessage,
  [in]           WS_ERROR               *faultError,
  [in]           HRESULT                faultErrorCode,
  [in]           WS_FAULT_DISCLOSURE    faultDisclosure,
  [in]           WS_MESSAGE             *requestMessage,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR               *error
);

Parametri

[in] channel

Canale in cui inviare il messaggio.

[in] replyMessage

Oggetto messaggio da utilizzare per inviare il messaggio di risposta.

L'oggetto messaggio deve trovarsi in WS_MESSAGE_STATE_EMPTY o WS_MESSAGE_STATE_INITIALIZED. Se viene fornito un messaggio inizializzato, deve essere stato inizializzato usando WS_FAULT_MESSAGE.

[in] faultError

Oggetto error da utilizzare per costruire l'errore.

[in] faultErrorCode

Codice di errore associato all'errore. Non può trattarsi di un codice riuscito.

Questo codice di errore non viene mai incluso direttamente nel messaggio di errore, ma viene invece usato come meccanismo di fallback per la creazione di una stringa di errore nel caso in cui l'oggetto WS_ERROR non contenga stringhe di errore.

[in] faultDisclosure

Controlla la quantità di informazioni sull'errore incluse nel messaggio di errore.

[in] requestMessage

Il messaggio di richiesta. Viene usato per ottenere le informazioni di correlazione utilizzate per formulare il messaggio di risposta.

Il messaggio può trovarsi in qualsiasi stato, ma WS_MESSAGE_STATE_EMPTY.

[in, optional] asyncContext

Informazioni su come richiamare la funzione in modo asincrono o NULL se si richiama in modo sincrono.

[in, optional] error

Specifica dove archiviare informazioni aggiuntive sull'errore se la funzione ha esito negativo.

Valore restituito

Questa funzione può restituire uno di questi valori.

Codice restituito Descrizione
WS_S_ASYNC
L'operazione asincrona è ancora in sospeso.
WS_E_OPERATION_ABORTED
L'operazione è stata interrotta.
WS_E_INVALID_OPERATION
L'operazione non è consentita a causa dello stato corrente dell'oggetto .
WS_E_ENDPOINT_DISCONNECTED
La connessione con l'endpoint remoto è stata terminata.
WS_E_INVALID_FORMAT
I dati di input non erano nel formato previsto o non hanno il valore previsto.
WS_E_OPERATION_TIMED_OUT
L'operazione non è stata completata entro il tempo assegnato.
WS_E_QUOTA_EXCEEDED
È stata superata una quota.
WS_E_SECURITY_VERIFICATION_FAILURE
La verifica di sicurezza non è riuscita per i dati ricevuti.
WS_E_SECURITY_SYSTEM_FAILURE
Un'operazione di sicurezza non è riuscita nel framework di Servizi Web Windows.
E_OUTOFMEMORY
Memoria insufficiente.
E_INVALIDARG
Uno o più argomenti non sono validi.
Altri errori
Questa funzione può restituire altri errori non elencati in precedenza.

Commenti

Il WS_FAULT inviato nel corpo del messaggio viene costruito usando le stesse regole definite da WsCreateFaultFromError.

Il valore del WS_ACTION_HEADER utilizzato per il messaggio di risposta viene calcolato come segue:

  • Se il WS_CHANNEL_PROPERTY_ADDRESSING_VERSION del canale è WS_ADDRESSING_VERSION_TRANSPORT, non viene inclusa alcuna azione nel messaggio perché la versione di indirizzamento non consente un valore di azione per gli errori.
  • Se l'oggetto error contiene una stringa di azione (la lunghezza della stringa restituita da WS_FAULT_ERROR_PROPERTY_ACTION è maggiore di zero), viene usata la stringa di azione.
  • Se l'oggetto error non contiene un'azione, viene fornito un valore di azione predefinito.
Se l'oggetto error contiene un'intestazione utilizzata per descrivere l'errore come specificato da WS_FAULT_ERROR_PROPERTY_HEADER, l'intestazione viene aggiunta alle intestazioni del messaggio di errore.

Il messaggio di errore includerà le informazioni di correlazione appropriate per il WS_ADDRESSING_VERSION. Per altre informazioni sulla correlazione dei messaggi di risposta di richiesta, vedere Panoramica del livello del canale .

Se si invia un errore senza un oggetto WS_ERROR , usare WsSendReplyMessage.

Per aggiungere intestazioni personalizzate al messaggio, inizializzare il messaggio WsInitializeMessage con WS_FAULT_MESSAGE e quindi aggiungere le intestazioni usando WsAddCustomHeader prima di chiamare questa funzione.

Requisiti

   
Client minimo supportato Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione webservices.h
Libreria WebServices.lib
DLL WebServices.dll