Compartilhar via


Manipulação de erros relacionados a notificações no EWS no Exchange

Descubra como lidar com erros relacionados à notificação em aplicativos que você desenvolve usando a API Gerenciada do EWS ou o EWS no Exchange.

Se o aplicativo assinar e receber notificações, talvez seja necessário lidar com erros relacionados à notificação. Você pode manipular esses erros em tempo de execução ou enquanto desenvolve seu aplicativo do EWS.

Tabela 1. Erros relacionados à notificação e como lidar com eles

Error Ocorre quando você tenta... Manipulá-lo pelo …
ErrorExceededConnectionCount Abra uma conexão para obter eventos quando a conta atingiu seu limite de conexão de conexões abertas de streaming.
  • Usando representação para abrir conexões.
  • Usando menos conexões para obter eventos. Maximize o número de assinaturas em cada conexão usando afinidade e colocando no máximo 200 IDs de assinatura no mesmo grupo. Em seguida, você pode usar a mesma conexão para recuperar eventos para todo o grupo, reduzindo o número de conexões necessárias.
  • Alterando o valor do HangingConnectionLimit no arquivo web.config para Exchange local para substituir o valor padrão de três conexões abertas. Exchange Online tem um HangingConnectionLimit padrão de 10, que não é configurável.
ErrorExceededSubscriptionCount Crie muitas assinaturas. O parâmetro de política de limitação EwsMaxSubscriptions determina o número máximo de assinaturas que uma conta pode criar.
ErrorInvalidSubscriptionRequest Crie assinaturas para várias caixas de correio ou várias pastas de uma única solicitação. Criando uma assinatura para uma única pasta pública ou uma única caixa de correio em uma única solicitação.
ErrorInvalidWatermark Obtenha eventos usando uma marca d'água inválida.
  • Verificando a ID da assinatura retornada em uma resposta anterior.
  • Garantindo que você esteja enviando a ID da assinatura para o objeto ExchangeService correto.
  • Criando uma nova assinatura.
ErrorMissedNotificationEvents Obtenha eventos quando alguns eventos anteriores foram perdidos. Comparando as propriedades da pasta estendida PR_LOCAL_COMMIT_TIME_MAX (0x670a) e PR_DELETED_COUNT_TOTAL (0x670b) para determinar quais alterações foram perdidas e criando uma nova assinatura.
ErrorProxyRequestNotAllowed Assine eventos para um usuário em uma solicitação em lote cuja caixa de correio foi movida para outro site. Usar o Autodiscover para reencontrar o ExternalEwsUrl ou o EwsPartnerUrl e criar uma nova assinatura.
ErrorReadEventsFailed Obtenha eventos de uma assinatura que não pode ser encontrada. Usar o Autodiscover para reencontrar o ExternalEwsUrl ou o EwsPartnerUrl e criar uma nova assinatura.
ErrorServerBusy Exceda os limites de limitação . Esteja ciente do seguinte em relação à limitação:
  • O limite de limitação de EwsMaxSubscriptions identifica o número máximo de assinaturas de notificação por push, pull ou streaming que podem estar ativas ao mesmo tempo. Esse é o valor das assinaturas de caixa de correio, não o número de assinaturas de pasta individuais em uma assinatura de caixa de correio. Começando com as versões de caixa de correio de serviço 14.16.0135 e 14.15.0057.000, uma caixa de correio hospedada por Exchange Online ou Exchange Online como parte do Office 365 pode ter até 20 assinaturas, e uma caixa de correio local do Exchange 2013 de destino pode ter até 5.000 assinaturas.
  • O limite de limitação EwsMaxConcurrency identifica o número máximo de solicitações ativas para conexões não streaming e tem um valor padrão de 27.
  • O limite padrão para conexões de streaming aberto é dez.
ErrorSubscriptionNotFound Obtenha eventos para uma assinatura que não pode ser encontrada. A assinatura pode ter expirado, o processo EWS pode ter sido reiniciado ou uma assinatura inválida foi passada.
  • Verificando se você está usando a mesma ID de assinatura que foi retornada em uma resposta anterior.
  • Garantindo que você esteja enviando a ID da assinatura para o objeto ExchangeService correto.
  • Criando uma nova assinatura.
ServiceLocalException Adicione uma assinatura a uma nova pasta enquanto uma conexão de assinatura está aberta em outra pasta. Alterar sua assinatura para assinar todas as pastas na caixa de correio, em vez de uma pasta específica.
ServiceResponseException Obtenha eventos para uma assinatura que não pode estar localizada na loja do Exchange.
  • Verificando se você está usando a mesma ID de assinatura que foi retornada em uma resposta anterior.
  • Garantindo que você esteja enviando a ID da assinatura para o objeto ExchangeService correto.

Recuperando-se de assinaturas perdidas

Quando uma assinatura é perdida ou não está mais acessível, é melhor criar uma nova assinatura e não incluir a marca d'água antiga na nova assinatura. A reescrita com a marca d'água antiga causa uma verificação linear de eventos, o que é caro. Em vez disso, crie uma nova assinatura e compare as propriedades da pasta para procurar alterações de conteúdo que ocorreram entre a assinatura perdida e a nova assinatura. As propriedades de pasta estendidas que recomendamos verificar são PR_LOCAL_COMMIT_TIME_MAX (0x670a0040) e PR_DELETED_COUNT_TOTAL (0x670b0003). Você pode fazer isso criando uma definição de propriedade estendida.

Confira também