Compartilhar via


Instrumentando solicitações de cliente para EWS e REST Exchange

Saiba mais sobre os cabeçalhos HTTP em solicitações e respostas REST e EWS que podem ajudá-lo a monitorar e solucionar problemas de seu Exchange aplicativo.

Isso já aconteceu com você? Um usuário do aplicativo relata um erro inesperado. Você deseja investigar, mas não pode reproduzi-lo. O erro desapareceu para o usuário e você é deixado com muito pouco dados a ação. Frustrante, não é? Vamos ver como você pode se preparar proativamente para esse cenário e, com sorte, evitar frustração no futuro.

Adicionar instrumentação a solicitações

Recomendamos adicionar cabeçalhos HTTP adicionais às suas solicitações para facilitar a solução de problemas. Você deve manter um registro dessas informações em algum lugar (por exemplo, em um arquivo de log) para que possa recuperá-las mais tarde, se precisar. Isso é útil ao examinar o tráfego de rede e também é útil se você contatar o suporte da Microsoft para assistência.

Tabela 1. Solicitar headers para solução de problemas

Cabeçalho HTTP (EWS) Equivalente à API Gerenciada do EWS Observações
User-Agent
ExchangeService.UserAgent
De definir isso como um valor exclusivo que identifique seu aplicativo cliente.

Usar o mesmo valor para todas as solicitações que seu aplicativo envia permite que a Microsoft ajude a solucionar falhas de chamada, caso elas surjam.
client-request-id
ExchangeService.ClientRequestId
De definir isso como um valor exclusivo diferente para cada solicitação que seu aplicativo envia.

Recomendamos que você use um GUID. Esse identificador exclusivo destina-se a ser usado para correlacionar atividades entre dois sistemas no caso de algo dar errado.
return-client-request-id
ExchangeService.ReturnClientRequestId
Dejuste isso como true para sinalizar para o servidor Exchange que ele deve retornar o valor do seu cliente-request-id na resposta correspondente.

Você pode usar isso para correlacionar solicitações e respostas em rastreamentos de rede ou rastreamentos de API gerenciada do EWS.
X-ClientStatistics
ExchangeService.SendClientLatencies
Usado para relatar latências do EWS à Microsoft se seu aplicativo estiver acessando Exchange Online ou Exchange Online como parte do Office 365.

Informações de log de respostas

Assim como seu cliente pode adicionar instrumentação adicional às solicitações que envia, Exchange adiciona instrumentação adicional às respostas na forma de cabeçalhos HTTP. Seu cliente deve capturar essas informações para acompanhar as informações de instrumentação de solicitação.

Observação

Se você estiver usando a API Gerenciada do EWS, não há equivalente direto para os cabeçalhos HTTP. No entanto, todos os cabeçalhos de resposta HTTP podem ser acessados por meio da propriedade ExchangeService.HttpResponseHeaders.

Tabela 2. Cabeçalhos de resposta HTTP

Cabeçalho HTTP Descrição
request-id
Uma ID gerada pelo servidor para a solicitação que corresponde a essa resposta.
client-request-id
O valor do header client-request-id na solicitação.

Esse header só estará presente se a solicitação contiver o header return-client-request-id com um valor true.
X-FEServer
O FQDN do servidor de Acesso para Cliente que processou a solicitação.
X-TargetBEServer
O FQDN do servidor de caixa de correio que processou a solicitação.
X-DiagInfo
Informações de diagnóstico adicionais, dependendo da solicitação.
x-ms-diagnostics
Esse header só será aplicável se a autenticação OAuth for usada na solicitação.

Ele contém um código de erro explícito que especifica por que uma autenticação OAuth falhou.

Ele tem o seguinte formato: errorId;reason="reason"error_type="error type"

O campo motivo é uma descrição aceitável para humanos do erro.

O campo errorId é um inteiro e o campo de tipo _ de erro é a representação de cadeia de caracteres desse inteiro, da seguinte forma:
  • 2000000: assinatura _ inválida
  • 2000001: _ token inválido
  • 2000002: o token _ expirou
  • 2000003: recurso _ inválido
  • 2000004: _ locatário inválido
  • 2000005: usuário _ inválido
  • 2000006: cliente _ inválido
  • 2000007: erro _ interno
  • 2000008: _ concessão inválida

Relatar latência do EWS para a Microsoft

Se seu aplicativo usa a API Gerenciada do EWS ou o EWS para se conectar ao Exchange Online, você pode relatar latência em solicitações do EWS diretamente para a Microsoft. As informações são passadas por meio do header de solicitação X-ClientStatistics. Se você estiver usando a API Gerenciada do EWS, tudo o que você precisa fazer é definir a propriedade ExchangeService.SendClientLatencies como true. Se você estiver usando o EWS, precisará medir o tempo entre a emissão de uma solicitação e o recebimento de uma resposta, em seguida, adicione o header X-ClientStatistics à próxima solicitação do EWS que seu aplicativo enviar, usando o seguinte formato.

X-ClientStatistics: MessageId=<value of request-id header>,ResponseTime=<time in milliseconds>,SoapAction=<EWS operation>

Mantemos relatórios para essas latências e os usamos para melhorar continuamente os serviços EWS Exchange Online.

Próximas etapas

Depois de adicionar instrumentação de cliente ao aplicativo, você está mais preparado se algo der errado. Se isso acontecer, você poderá usar seus dados de instrumentação para solucionar problemas com seu aplicativo.

Confira também