Dela via


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.

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.

Nästa steg