Azure Relay-undantag
Den här artikeln innehåller några undantag som kan genereras av Azure Relay-API:erna. Den här referensen kan komma att ändras, så kom tillbaka för uppdateringar.
Undantagskategorier
Relay-API:erna genererar undantag som kan ingå i följande kategorier. I listan visas också föreslagna åtgärder som du kan vidta för att lösa undantagen.
Användarkodfel: System.ArgumentException, System.InvalidOperationException, System.OperationCanceledException, System.Runtime.Serialization.SerializationException.
Allmän åtgärd: Försök att åtgärda koden innan du fortsätter.
Installations-/konfigurationsfel: System.UnauthorizedAccessException.
Allmän åtgärd: Granska konfigurationen. Ändra konfigurationen om det behövs.
Tillfälliga undantag: Microsoft.ServiceBus.Messaging.MessagingException, Microsoft.ServiceBus.Messaging.ServerBusyException, Microsoft.ServiceBus.Messaging.MessagingCommunicationException.
Allmän åtgärd: Försök utföra åtgärden igen eller meddela användarna.
Andra undantag: System.Transactions.TransactionException, System.TimeoutException.
Allmän åtgärd: Specifik för undantagstypen. Se tabellen i följande avsnitt.
Undantagstyper
I följande tabell visas undantagstyper för meddelanden och deras orsaker. Den innehåller även information om föreslagna åtgärder som du kan vidta för att lösa undantagen.
Undantagstyp | Beskrivning | Föreslagen åtgärd | Obs! Vid automatiskt eller omedelbart återförsök |
---|---|---|---|
Tidsgräns | Servern svarade inte på den begärda åtgärden inom den angivna tiden, som styrs av OperationTimeout. Servern kan ha slutfört den begärda åtgärden. Det kan inträffa på grund av nätverks- eller andra infrastrukturförseningar. | Kontrollera systemtillståndet för konsekvens och försök sedan igen om det behövs. Se TimeoutException. | Försök igen kan hjälpa i vissa fall. lägg till logik för återförsök i koden. |
Ogiltig åtgärd | Den begärda användaråtgärden tillåts inte i servern eller tjänsten. Mer information finns i undantagsmeddelandet. | Kontrollera koden och dokumentationen. Kontrollera att den begärda åtgärden är giltig. | Försök igen hjälper inte. |
Åtgärden avbröts | Ett försök görs att anropa en åtgärd på ett objekt som redan har stängts, avbrutits eller tagits bort. I sällsynta fall tas den omgivande transaktionen redan bort. | Kontrollera koden och se till att den inte anropar åtgärder på ett borttaget objekt. | Försök igen hjälper inte. |
Obehörig åtkomst | TokenProvider-objektet kunde inte hämta en token, token är ogiltig eller så innehåller token inte de anspråk som krävs för att utföra åtgärden. | Kontrollera att tokenprovidern har skapats med rätt värden. Kontrollera konfigurationen av åtkomstkontrolltjänsten. | Försök igen kan hjälpa i vissa fall. lägg till logik för återförsök i koden. |
Argumentfel, Argumentet Null, Argumentet ligger utom intervallet |
Ett eller flera av följande problem har uppstått: Ett eller flera argument som anges i metoden är ogiltiga. Den URI som anges i NamespaceManager eller Create innehåller ett eller flera sökvägssegment. URI-schemat som anges till NamespaceManager eller Create är ogiltigt. Egenskapsvärdet är större än 32 KB. |
Kontrollera anropskoden och kontrollera att argumenten är korrekta. | Försök igen hjälper inte. |
Servern är upptagen | Tjänsten kan inte bearbeta begäran just nu. | Klienten kan vänta en tid och sedan försöka utföra åtgärden igen. | Klienten kan försöka igen efter ett visst intervall. Om ett nytt försök resulterar i ett annat undantag kontrollerar du återförsöksbeteendet för undantaget. |
Kvoten har överskridits | Meddelandeentiteten har nått sin maximala tillåtna storlek. | Skapa utrymme i entiteten genom att ta emot meddelanden från entiteten eller dess underfrågor. Se QuotaExceededException. | Ett nytt försök kan hjälpa om meddelanden har tagits bort under tiden. |
Meddelandestorleken har överskridits | En meddelandenyttolast överskrider gränsen på 256 KB. Gränsen på 256 KB är den totala meddelandestorleken. Den totala meddelandestorleken kan innehålla systemegenskaper och eventuella Microsoft .NET-omkostnader. | Minska storleken på meddelandenyttolasten och försök sedan utföra åtgärden igen. | Försök igen hjälper inte. |
QuotaExceededException
QuotaExceededException anger att en kvot för en specifik enhet har överskridits.
För Relay omsluter det här undantaget System.ServiceModel.QuotaExceededException, vilket anger att det maximala antalet lyssnare har överskridits för den här slutpunkten. Det anges i värdet MaximumListenersPerEndpoint för undantagsmeddelandet.
TimeoutException
Ett TimeoutException indikerar att en åtgärd som användaren har initierat tar längre tid än åtgärdens tidsgräns.
Kontrollera värdet för egenskapen ServicePointManager.DefaultConnectionLimit . Om du når den här gränsen kan det också orsaka timeoutException.
För Relay kan du få timeout-undantag när du först öppnar en reläavsändaranslutning. Det finns två vanliga orsaker till det här undantaget:
- OpenTimeout-värdet kan vara för litet (även om det är en bråkdel av en sekund).
- En lokal relälyssnare kanske inte svarar (eller så kan det uppstå problem med brandväggsregler som förbjuder lyssnare från att acceptera nya klientanslutningar) och OpenTimeout-värdet är mindre än cirka 20 sekunder.
Exempel:
'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.
Vanliga orsaker
Det finns två möjliga orsaker till det här felet:
Felaktig konfiguration
Tidsgränsen för åtgärden kan vara för liten för drifttillståndet. Standardvärdet för tidsgränsen för åtgärden i klient-SDK:t är 60 sekunder. Kontrollera om värdet i koden är inställt på något för litet. CPU-användning och nätverkets villkor kan påverka den tid det tar för en åtgärd att slutföras. Det är en bra idé att inte ange tidsgränsen för åtgärden till ett mycket litet värde.
Tillfälligt tjänstfel
Ibland kan det uppstå fördröjningar i bearbetningen av begäranden i Relay-tjänsten. Det kan till exempel inträffa under perioder med hög trafik. Om det inträffar kan du försöka utföra åtgärden igen efter en fördröjning tills åtgärden har slutförts. Om samma åtgärd fortsätter att misslyckas efter flera försök kontrollerar du statuswebbplatsen för Azure-tjänsten för att se om det finns kända avbrott i tjänsten.
ConnectionLostException – NameRenewalFailed
Symtom
Klienten får undantaget: Microsoft.Azure.Relay.ConnectionLostException : InternalServerError: NameRenewalFailed
.
Orsak
Azure Relay-tjänsten startar om lyssnaranslutningar var 24:e timme. Detta beteende är av design. Azure Relay-tjänsten kopplar från en aktiv lyssnaranslutning var 24:e timme och lyssnaren återansluter till servern med hjälp av mekanismen för återförsök.
Åtgärd
Ingen åtgärd från din sida eftersom lyssnaren automatiskt återansluter till servern. Om du märker att lyssnaren inte ansluter igen skickar du ett ärende till supportteamet.