Exceções do Azure Relay

Este artigo lista algumas exceções que podem ser geradas pelas APIs de Retransmissão do Azure. Esta referência está sujeita a alterações, portanto, verifique novamente se há atualizações.

Categorias de exceção

As APIs de retransmissão geram exceções que podem se enquadrar nas seguintes categorias. Também estão listadas as ações sugeridas que você pode tomar para ajudar a resolver as exceções.

Tipos de exceção

A tabela a seguir lista os tipos de exceção de mensagens e suas causas. Ele também observa as ações sugeridas que você pode tomar para ajudar a resolver as exceções.

Tipo de exceção Descrição Ação sugerida Nota sobre a repetição automática ou imediata
Tempo limite O servidor não respondeu à operação solicitada dentro do tempo especificado, que é controlado por OperationTimeout. O servidor pode ter concluído a operação solicitada. Isso pode acontecer devido a atrasos na rede ou em outras infraestruturas. Verifique a consistência do estado do sistema e, em seguida, tente novamente, se necessário. Consulte TimeoutException. Repetir pode ajudar em alguns casos; Adicione lógica de repetição ao código.
Operação inválida A operação de usuário solicitada não é permitida dentro do servidor ou serviço. Consulte a mensagem de exceção para obter detalhes. Verifique o código e a documentação. Certifique-se de que a operação solicitada é válida. Repetir não ajuda.
Operação cancelada É feita uma tentativa de invocar uma operação em um objeto que já foi fechado, abortado ou descartado. Em casos raros, a transação ambiental já está descartada. Verifique o código e certifique-se de que ele não invoque operações em um objeto descartado. Repetir não ajuda.
Acesso não autorizado O objeto TokenProvider não pôde adquirir um token, o token é inválido ou o token não contém as declarações necessárias para executar a operação. Certifique-se de que o provedor de token é criado com os valores corretos. Verifique a configuração do serviço de Controle de Acesso. Repetir pode ajudar em alguns casos; Adicione lógica de repetição ao código.
Exceção de argumento,
Argumento Nulo,
Argumento fora do alcance
Ocorreu uma ou mais das seguintes situações:
Um ou mais argumentos fornecidos ao método são inválidos.
O URI fornecido para NamespaceManager ou Create contém um ou mais segmentos de caminho.
O esquema de URI fornecido para NamespaceManager ou Create é inválido.
O valor da propriedade é maior que 32 KB.
Verifique o código de chamada e certifique-se de que os argumentos estão corretos. Repetir não ajuda.
Servidor ocupado O serviço não é capaz de processar a solicitação no momento. O cliente pode esperar por um período de tempo e, em seguida, tentar novamente a operação. O cliente pode tentar novamente após um intervalo específico. Se uma nova tentativa resultar em uma exceção diferente, verifique o comportamento de repetição dessa exceção.
Quota excedida A entidade de mensagens atingiu seu tamanho máximo permitido. Crie espaço na entidade recebendo mensagens da entidade ou de suas subfilas. Consulte QuotaExceededException. Repetir pode ajudar se as mensagens tiverem sido removidas entretanto.
Tamanho da mensagem excedido Uma carga útil de mensagem excede o limite de 256 KB. Observe que o limite de 256 KB é o tamanho total da mensagem. O tamanho total da mensagem pode incluir propriedades do sistema e qualquer sobrecarga do Microsoft .NET. Reduza o tamanho da carga útil da mensagem e, em seguida, tente novamente a operação. Repetir não ajuda.

QuotaExceededException

QuotaExceededException indica que foi excedida uma quota de uma entidade específica.

Para Retransmissão, essa exceção encapsula System.ServiceModel.QuotaExceededException, que indica que o número máximo de ouvintes foi excedido para esse ponto de extremidade. É indicado no valor MaximumListenersPerEndpoint da mensagem de exceção.

TimeoutException

Uma TimeoutException indica que uma operação iniciada pelo utilizador está a demorar mais do que o tempo limite da operação.

Verifique o valor da propriedade ServicePointManager.DefaultConnectionLimit . Atingir esse limite também pode causar uma TimeoutException.

Para Retransmissão, você pode receber exceções de tempo limite quando abrir pela primeira vez uma conexão de remetente de retransmissão. Existem duas causas comuns para esta exceção:

  • O valor OpenTimeout pode ser muito pequeno (mesmo que por uma fração de segundo).
  • Um ouvinte de retransmissão local pode não responder (ou pode encontrar problemas de regras de firewall que proíbem os ouvintes de aceitar novas conexões de cliente) e o valor OpenTimeout é inferior a cerca de 20 segundos.

Exemplo:

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

Causas comuns

Há duas causas comuns para este erro:

  • Configuração incorreta

    O tempo limite da operação pode ser muito pequeno para a condição operacional. O valor padrão para o tempo limite da operação no SDK do cliente é 60 segundos. Verifique se o valor no seu código está definido como algo muito pequeno. Observe que o uso da CPU e a condição da rede podem afetar o tempo necessário para a conclusão de uma operação. É uma boa ideia não definir o tempo limite da operação para um valor muito pequeno.

  • Erro de serviço transitório

    Ocasionalmente, o serviço de retransmissão pode sofrer atrasos no processamento de solicitações. Pode acontecer, por exemplo, durante períodos de tráfego intenso. Se isso ocorrer, tente novamente a operação após um atraso, até que a operação seja bem-sucedida. Se a mesma operação continuar a falhar após várias tentativas, verifique o site de status do serviço do Azure para ver se há interrupções de serviço conhecidas.

ConnectionLostException - NameRenewalFailed

Sintomas

O seu cliente recebe a exceção: Microsoft.Azure.Relay.ConnectionLostException : InternalServerError: NameRenewalFailed.

Causa

O serviço de Retransmissão do Azure reinicia as conexões de ouvinte a cada 24 horas. Este comportamento é propositado. O serviço de Retransmissão do Azure desconecta uma conexão ativa do ouvinte a cada 24 horas, e o ouvinte se reconectará ao servidor usando o mecanismo de nova tentativa.

Resolução

Nenhuma ação de sua parte, pois o ouvinte se reconecta automaticamente ao servidor. Se você notar que seu ouvinte não está se conectando novamente, envie um tíquete para a equipe de suporte.

Próximos passos