Výjimky služby Azure Relay
Tento článek uvádí některé výjimky, které mohou být generovány rozhraními API služby Azure Relay. Tento odkaz se může změnit, proto se vraťte k aktualizacím.
Kategorie výjimek
Rozhraní API služby Relay generují výjimky, které mohou spadat do následujících kategorií. Uvedené jsou také navrhované akce, které můžete provést, abyste mohli tyto výjimky vyřešit.
Chyba kódování uživatele: System.ArgumentException, System.InvalidOperationException, System.OperationCanceledException, System.Runtime.Serialization.SerializationException.
Obecná akce: Než budete pokračovat, zkuste kód opravit.
Chyba instalace/konfigurace: System.UnauthorizedAccessException.
Obecná akce: Zkontrolujte konfiguraci. V případě potřeby změňte konfiguraci.
Přechodné výjimky: Microsoft.ServiceBus.Messaging.MessagingException, Microsoft.ServiceBus.Messaging.ServerBusyException, Microsoft.ServiceBus.Messaging.MessagingCommunicationException.
Obecná akce: Zkuste operaci zopakovat nebo upozornit uživatele.
Další výjimky: System.Transactions.TransactionException, System.TimeoutException.
Obecná akce: Specifické pro typ výjimky. Podívejte se na tabulku v následující části.
Typy výjimek
Následující tabulka uvádí typy výjimek zasílání zpráv a jejich příčiny. Obsahuje také poznámky k navrhovaným akcím, které můžete provést při řešení výjimek.
Typ výjimky | Popis | Navrhovaná akce | Poznámka k automatickému nebo okamžitému opakování |
---|---|---|---|
Časový limit | Server neodpověděl na požadovanou operaci v zadaném čase, který je řízen operací OperationTimeout. Server mohl dokončit požadovanou operaci. Může k tomu dojít kvůli zpoždění sítě nebo jiné infrastruktury. | Zkontrolujte konzistenci systému a v případě potřeby to zkuste znovu. Viz TimeoutException. | Opakování může v některých případech pomoct; přidání logiky opakování do kódu |
Neplatná operace | Požadovaná operace uživatele není v rámci serveru nebo služby povolená. Podrobnosti najdete ve zprávě o výjimce. | Zkontrolujte kód a dokumentaci. Ujistěte se, že požadovaná operace je platná. | Opakování nepomůže. |
Operace byla zrušena. | Došlo k pokusu o vyvolání operace u objektu, který již byl uzavřen, přerušen nebo uvolněn. Ve výjimečných případech je okolí transakce již uvolněna. | Zkontrolujte kód a ujistěte se, že nevolá operace s odstraněným objektem. | Opakování nepomůže. |
Neoprávněný přístup | Objekt TokenProvider nemohl získat token, token je neplatný nebo token neobsahuje deklarace identity potřebné k provedení operace. | Ujistěte se, že je zprostředkovatel tokenu vytvořen se správnými hodnotami. Zkontrolujte konfiguraci služby Řízení přístupu. | Opakování může v některých případech pomoct; přidání logiky opakování do kódu |
Výjimka argumentu, Argument Null, Argument mimo rozsah |
Došlo k některému z následujících problémů: Jeden nebo více argumentů zadaných metodě je neplatný. Identifikátor URI zadaný pro NamespaceManager nebo Create obsahuje jeden nebo více segmentů cesty. Schéma identifikátoru URI zadané pro NamespaceManager nebo Create je neplatné. Hodnota vlastnosti je větší než 32 kB. |
Zkontrolujte volající kód a ujistěte se, že jsou argumenty správné. | Opakování nepomůže. |
Zaneprázdněný server | Služba v tuto chvíli nemůže požadavek zpracovat. | Klient může nějakou dobu počkat a pak operaci zopakovat. | Klient se může po určitém intervalu opakovat. Pokud opakování způsobí jinou výjimku, zkontrolujte chování opakování této výjimky. |
Překročení kvóty | Entita zasílání zpráv dosáhla maximální povolené velikosti. | Vytvořte v entitě prostor příjmem zpráv z entity nebo jejích dílčích front. Viz QuotaExceededException. | Opakování může pomoct, pokud se mezitím odebraly zprávy. |
Byla překročena velikost zprávy. | Datová část zprávy překračuje limit 256 kB. Limit 256 kB je celková velikost zprávy. Celková velikost zprávy může zahrnovat systémové vlastnosti a veškeré režijní náklady microsoft .NET. | Zmenšete velikost datové části zprávy a zkuste operaci zopakovat. | Opakování nepomůže. |
QuotaExceededException
QuotaExceededException indikuje, že došlo k překročení kvóty pro některou z entit.
U služby Relay tato výjimka zabalí Výjimku System.ServiceModel.QuotaExceededException, což značí, že byl pro tento koncový bod překročen maximální počet naslouchacích procesů. Označuje se v hodnotě MaximumListenersPerEndpoint zprávy výjimky.
TimeoutException
Výjimka TimeoutException zpravidla indikuje, že operace iniciovaná uživatelem trvá déle, než je příslušný časový limit.
Zkontrolujte hodnotu ServicePointManager.DefaultConnectionLimit vlastnost. Dosažení tohoto limitu může také způsobit vypršení časového limituException.
Při prvním otevření připojení odesílatele přenosu může u služby Relay dojít k výjimkám časového limitu. Existují dvě běžné příčiny této výjimky:
- Hodnota OpenTimeout může být příliš malá (i o zlomek sekundy).
- Místní naslouchací proces přenosu může přestat reagovat (nebo může narazit na problémy s pravidly brány firewall, které zakazují naslouchacím procesům přijímat nová připojení klientů) a hodnota OpenTimeout je menší než 20 sekund.
Příklad:
'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.
Běžné příčiny
Tato chyba má dvě obvyklé příčiny:
Nesprávná konfigurace
Časový limit operace může být pro provozní podmínku příliš malý. Výchozí hodnota časového limitu operace v klientské sadě SDK je 60 sekund. Zkontrolujte, jestli je hodnota v kódu nastavená na něco příliš malého. Využití procesoru a stav sítě můžou ovlivnit dobu potřebnou k dokončení operace. Je vhodné nenastavovat časový limit operace na velmi malou hodnotu.
Chyba přechodné služby
Služba Relay může občas zaznamenat zpoždění při zpracování požadavků. Může k tomu dojít například během období vysokého provozu. Pokud k ní dojde, zkuste operaci zopakovat po zpoždění, dokud nebude operace úspěšná. Pokud stejná operace po několika pokusech selže, zkontrolujte web stavu služby Azure a zjistěte, jestli nedošlo k výpadkům služby.
ConnectionLostException – NameRenewalFailed
Příznaky
Váš klient obdrží výjimku: Microsoft.Azure.Relay.ConnectionLostException : InternalServerError: NameRenewalFailed
.
Příčina
Služba Azure Relay restartuje připojení naslouchacího procesu každých 24 hodin. Toto chování je záměrné. Služba Azure Relay odpojí aktivní připojení naslouchacího procesu každých 24 hodin a naslouchací proces se znovu připojí k serveru pomocí mechanismu opakování.
Rozlišení
Žádná akce na vaší straně jako naslouchací proces se automaticky znovu připojí k serveru. Pokud si všimnete, že se váš naslouchací proces znovu nepřipojí, odešlete lístek týmu podpory.