Delen via


Uitzonderingen voor Azure Relay

Dit artikel bevat enkele uitzonderingen die kunnen worden gegenereerd door de Azure Relay-API's. Deze verwijzing kan worden gewijzigd, dus controleer op updates.

Uitzonderingscategorieën

De Relay-API's genereren uitzonderingen die mogelijk in de volgende categorieën vallen. Ook worden voorgestelde acties weergegeven die u kunt ondernemen om de uitzonderingen op te lossen.

Uitzonderingstypen

De volgende tabel bevat uitzonderingstypen voor berichten en de oorzaken ervan. Er worden ook voorgestelde acties beschreven die u kunt ondernemen om de uitzonderingen op te lossen.

Uitzonderingstype Beschrijving Voorgestelde actie Opmerking over automatisch of onmiddellijk opnieuw proberen
Time-out De server heeft niet gereageerd op de aangevraagde bewerking binnen de opgegeven tijd, die wordt beheerd door OperationTimeout. De aangevraagde bewerking kan zijn voltooid op de server. Dit kan gebeuren vanwege vertragingen in het netwerk of andere infrastructuur. Controleer de systeemstatus op consistentie en probeer het zo nodig opnieuw. Zie TimeoutException. In sommige gevallen kan het opnieuw proberen helpen; logica voor opnieuw proberen toe te voegen aan code.
Ongeldige bewerking De aangevraagde gebruikersbewerking is niet toegestaan binnen de server of service. Zie het uitzonderingsbericht voor meer informatie. Controleer de code en de documentatie. Zorg ervoor dat de aangevraagde bewerking geldig is. Het is niet handig om het opnieuw te proberen.
Bewerking geannuleerd Er wordt geprobeerd een bewerking aan te roepen voor een object dat al is gesloten, afgebroken of verwijderd. In zeldzame gevallen wordt de omgevingstransactie al verwijderd. Controleer de code en zorg ervoor dat er geen bewerkingen worden aangeroepen voor een verwijderd object. Het is niet handig om het opnieuw te proberen.
Onbevoegde toegang Het TokenProvider-object kan geen token verkrijgen, het token is ongeldig of het token bevat niet de claims die nodig zijn om de bewerking uit te voeren. Zorg ervoor dat de tokenprovider is gemaakt met de juiste waarden. Controleer de configuratie van de Access Control-service. In sommige gevallen kan het opnieuw proberen helpen; logica voor opnieuw proberen toe te voegen aan code.
Argument-uitzondering,
Argument Null,
Argument buiten bereik
Er is een of meer van de volgende zaken opgetreden:
Een of meer argumenten die aan de methode worden opgegeven, zijn ongeldig.
De URI die wordt geleverd aan NamespaceManager of Create bevat een of meer padsegmenten.
Het URI-schema dat is opgegeven bij NamespaceManager of Create , is ongeldig.
De eigenschapswaarde is groter dan 32 kB.
Controleer de aanroepende code en controleer of de argumenten juist zijn. Het is niet handig om het opnieuw te proberen.
Server bezet De service kan de aanvraag momenteel niet verwerken. De client kan een bepaalde periode wachten en de bewerking vervolgens opnieuw uitvoeren. De client kan het opnieuw proberen na een bepaald interval. Als een nieuwe poging resulteert in een andere uitzondering, controleert u het gedrag van die uitzondering.
Quotum overschreden De berichtenentiteit heeft de maximale toegestane grootte bereikt. Maak ruimte in de entiteit door berichten van de entiteit of subqueues te ontvangen. Zie QuotaExceededException. Het opnieuw proberen kan helpen als berichten ondertussen zijn verwijderd.
Berichtgrootte overschreden Een nettolading van een bericht overschrijdt de limiet van 256 kB. Houd er rekening mee dat de limiet van 256 kB de totale berichtgrootte is. De totale berichtgrootte kan systeemeigenschappen en eventuele Microsoft .NET-overhead bevatten. Verklein de nettolading van het bericht en voer de bewerking opnieuw uit. Het is niet handig om het opnieuw te proberen.

QuotaExceededException

QuotaExceededException geeft aan dat een quotum voor een bepaalde entiteit is overschreden.

Voor Relay verpakt deze uitzondering het System.ServiceModel.QuotaExceededException, wat aangeeft dat het maximum aantal listeners voor dit eindpunt is overschreden. Dit wordt aangegeven in de waarde MaximumListenersPerEndpoint van het uitzonderingsbericht.

TimeoutException

Een TimeoutException geeft aan dat een door de gebruiker geïnitieerde bewerking langer duurt dan de time-out voor de bewerking.

Controleer de waarde van de eigenschap ServicePointManager.Default Verbinding maken ionLimit. Het bereiken van deze limiet kan ook een TimeoutException veroorzaken.

Voor Relay ontvangt u mogelijk time-outuitzondering wanneer u voor het eerst een relay-afzenderverbinding opent. Er zijn twee veelvoorkomende oorzaken voor deze uitzondering:

  • De OpenTimeout-waarde is mogelijk te klein (zelfs met een fractie van een seconde).
  • Een on-premises relaylistener reageert mogelijk niet (of er kunnen firewallregels optreden waardoor listeners geen nieuwe clientverbindingen accepteren) en de Waarde OpenTimeout is minder dan 20 seconden.

Voorbeeld:

'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.

Veelvoorkomende oorzaken

Er zijn twee veelvoorkomende oorzaken voor deze fout:

  • Onjuiste configuratie

    De time-out van de bewerking is mogelijk te klein voor de operationele voorwaarde. De standaardwaarde voor de time-out voor de bewerking in de client-SDK is 60 seconden. Controleer of de waarde in uw code is ingesteld op iets te klein. Houd er rekening mee dat het CPU-gebruik en de toestand van het netwerk van invloed kunnen zijn op de tijd die nodig is om een bewerking te voltooien. Het is een goed idee om de time-out van de bewerking niet in te stellen op een zeer kleine waarde.

  • Tijdelijke servicefout

    Af en toe kan de Relay-service vertragingen ondervinden bij het verwerken van aanvragen. Dit kan bijvoorbeeld gebeuren tijdens perioden met veel verkeer. Als dit gebeurt, voert u de bewerking na een vertraging opnieuw uit totdat de bewerking is geslaagd. Als dezelfde bewerking na meerdere pogingen blijft mislukken, controleert u de azure-servicestatussite om te zien of er bekende servicestoringen zijn.

Verbinding maken ionLostException - NameRenewalFailed

Symptomen

Uw client ontvangt de uitzondering: Microsoft.Azure.Relay.ConnectionLostException : InternalServerError: NameRenewalFailed.

Oorzaak

Met de Azure Relay-service worden listenerverbindingen elke 24 uur opnieuw opgestart. Dit is zo ontworpen. De Azure Relay-service verbreekt elke 24 uur een actieve listenerverbinding en de listener maakt opnieuw verbinding met de server met behulp van het mechanisme voor opnieuw proberen.

Oplossing

Er is geen actie op uw onderdeel omdat de listener automatisch opnieuw verbinding maakt met de server. Als u merkt dat uw listener geen verbinding meer maakt, dient u een ticket in bij het ondersteuningsteam.

Volgende stappen