Eccezioni del servizio di inoltro di Azure

Questo articolo elenca alcune eccezioni generate dalle API di inoltro di Azure. Il documento è soggetto a modifica ed è quindi opportuno controllare periodicamente la presenza di aggiornamenti.

Categorie di eccezioni

Le eccezioni generate dalle API di inoltro rientrano nelle categorie seguenti. Vengono consigliate anche le azioni per la risoluzione delle eccezioni.

Tipi di eccezioni

La tabella seguente elenca i tipi di eccezioni di messaggistica, ne riporta le possibili cause e consiglia l'azione da eseguire.

Tipo di eccezione Descrizione Azione suggerita Nota sulla ripetizione automatica o immediata
Timeout Il server non ha risposto all'operazione richiesta entro il tempo specificato, controllato da OperationTimeout. Il server può aver completato l'operazione richiesta. Può verificarsi a causa di ritardi di rete o di altro tipo dell'infrastruttura. Controllare lo stato del sistema per verificarne la coerenza e, se necessario, ripetere l'operazione. Vedere TimeoutException. In alcuni casi può essere utile ripetere l'operazione; aggiungere al codice la logica di ripetizione dei tentativi.
Operazione non valida L'operazione utente richiesta non è consentita all'interno del server o del servizio. Per informazioni dettagliate, vedere il messaggio di eccezione. Controllare il codice e la documentazione. Assicurarsi che l'operazione richiesta sia valida. I tentativi non sono utili.
Operazione annullata È stato eseguito un tentativo di richiamare un'operazione su un oggetto già chiuso, interrotto o eliminato. In alcuni casi rari, la transazione di ambiente è già stata eliminata. Controllare il codice e assicurarsi che non richiami le operazioni su un oggetto eliminato. I tentativi non sono utili.
Accesso non autorizzato L'oggetto TokenProvider non è riuscito ad acquisire un token, il token non è valido o il token non contiene le attestazioni necessarie per eseguire l'operazione. Assicurarsi che il provider di token sia stato creato con i valori corretti. Controllare la configurazione del servizio di controllo di accesso. In alcuni casi può essere utile ripetere l'operazione; aggiungere al codice la logica di ripetizione dei tentativi.
Eccezione di argomento
Argomento Null
Argomento non compreso nell'intervallo
Si è verificato uno o più dei seguenti casi:
Uno o più argomenti forniti al metodo non sono validi.
L'URI fornito a NamespaceManager o a Create contiene uno o più segmenti di percorso.
Lo schema URI fornito a NamespaceManager o Create non è valido.
Il valore della proprietà è maggiore di 32 KB.
Controllare il codice chiamante e assicurarsi che gli argomenti siano corretti. I tentativi non sono utili.
Server occupato Il servizio non è in grado di elaborare la richiesta in questo momento. Il client può attendere per un certo periodo di tempo, quindi è opportuno ripetere l'operazione. Il client può eseguire nuovi tentativi dopo un intervallo specifico. Se viene generata un'eccezione diversa, controllare il comportamento di ripetizione del tentativo della nuova eccezione.
Quota superata L'entità di messaggistica ha raggiunto le dimensioni massime consentite. Creare spazio nell'entità mediante la ricezione di messaggi dall'entità o dalle relative code secondarie. Vedere QuotaExceededException. Se nel frattempo sono stati rimossi i messaggi, può essere utile ripetere l'operazione.
Dimensione del messaggio superata Un payload del messaggio supera il limite di 256 KB. Si noti che il limite di 256 KB è la dimensione totale del messaggio. La dimensione totale dei messaggi può includere proprietà di sistema ed eventuali overhead .NET. Ridurre le dimensioni del payload del messaggio e quindi ripetere l'operazione. I tentativi non sono utili.

QuotaExceededException

QuotaExceededException indica che è stata superata la quota di un'entità specifica.

Per l'inoltro, questa eccezione esegue il wrapping di System.ServiceModel.QuotaExceededException, il quale indica che è stato superato il numero massimo di listener per questo endpoint. È indicato nel valore MaximumListenersPerEndpoint del messaggio di eccezione.

TimeoutException

Un'eccezione di tipo TimeoutException indica che un'operazione avviata dall'utente richiede più tempo rispetto al timeout dell'operazione.

Controllare il valore della proprietà ServicePointManager. DefaultConnectionLimit. Il raggiungimento di questo limite può causare anche un TimeoutException.

Per l'inoltro è possibile ricevere eccezioni di timeout alla prima apertura di una connessione di inoltro del mittente. Questa eccezione può essere dovuta a due cause comuni:

  • Il valore OpenTimeout è troppo piccolo (anche di una frazione di secondo).
  • Uno o più listener di inoltro locali non sono reattivi o si verificano problemi di regole firewall che non consentono ai listener di accettare nuove connessioni client e il valore OpenTimeout è minore di circa 20 secondi.

Esempio:

'System.TimeoutException’: The operation did not complete within the allotted timeout of 00:00:10.
The time allotted to this operation may have been a portion of a longer timeout.

Cause comuni

Questo errore può essere dovuto a due cause comuni:

  • Configurazione non corretta

    Il valore di timeout dell'operazione potrebbe essere troppo ridotto per la condizione operativa. Il valore predefinito per il timeout dell'operazione dell'SDK client è 60 secondi. Verificare se il valore nel codice è impostato su un valore troppo piccolo. Si noti che l'uso della CPU e la condizione della rete possono incidere sul tempo necessario per completare un'operazione. È consigliabile non impostare il timeout dell'operazione su un valore molto basso.

  • Errore temporaneo del servizio

    In alcuni casi per il servizio di inoltro potrebbero verificarsi ritardi nell'elaborazione delle richieste. Può verificarsi, ad esempio, durante periodi di traffico elevato. In caso affermativo, ripetere l'operazione dopo un ritardo fino a quando l'operazione non riesce. Se la stessa operazione ha ancora esito negativo dopo diversi tentativi, visitare il sito sullo stato dei servizi Azure per verificare se esistono casi noti di interruzioni del servizio.

Connessione ionLostException - NameRenewalFailed

Sintomi

Il client riceve l'eccezione : Microsoft.Azure.Relay.ConnectionLostException : InternalServerError: NameRenewalFailed.

Causa

Il servizio inoltro di Azure riavvia le connessioni del listener ogni 24 ore. Questo comportamento dipende dalla progettazione. Il servizio inoltro di Azure disconnette una connessione attiva del listener ogni 24 ore e il listener si riconnetterà al server usando il meccanismo di ripetizione dei tentativi.

Risoluzione

Nessuna azione da parte del listener si riconnette automaticamente al server. Se si nota che il listener non si connette nuovamente, inviare un ticket al team di supporto.

Passaggi successivi