在客户端中检测 EWS 和 REST 的Exchange
了解 EWS 中的 HTTP 标头和 REST 请求和响应,这些请求和响应可帮助您监视您的 Exchange 应用程序。
你是否曾经这样过? 应用程序的用户报告意外错误。 你想要调查,但无法重现它。 用户的错误已消失,你只留下非常少的可操作数据。 很麻烦,不是吗? 让我们看一下如何主动准备此方案,并希望在将来避免受挫。
向请求添加检测
建议向请求添加其他 HTTP 标头,以方便进行故障排除。 您应将此信息的记录保留 (例如,在 日志文件) 中,以便以后可以在需要时进行检索。 这在检查网络流量时很有用,并且如果你联系 Microsoft 支持人员寻求帮助,这也会很有帮助。
表 1.疑难解答的请求标头
EWS (HTTP 标头) | EWS 托管 API 等效项 | 注意 |
---|---|---|
User-Agent |
ExchangeService.UserAgent |
将此值设置为标识客户端应用程序的唯一值。 如果对应用程序发送的所有请求使用相同的值,Microsoft 可帮助解决呼叫失败问题(如果发生)。 |
client-request-id |
ExchangeService.ClientRequestId |
对于应用程序发送的每一个请求,将其设置为不同的唯一值。 建议使用 GUID。 此唯一标识符用于在出现问题时关联两个系统之间的活动。 |
return-client-request-id |
ExchangeService.ReturnClientRequestId |
将此值 设置为 true 以向 Exchange 服务器发出信号,指示它应在相应响应中返回客户端请求 id 的值。 您可以使用它关联网络跟踪或 EWS 托管 API 跟踪中的请求和响应。 |
X-ClientStatistics |
ExchangeService.SendClientLatencies |
用于向 Microsoft 报告EWS延迟(如果应用程序正在访问 Exchange Online 或 Exchange Online 作为 Office 365 的一Office 365。 |
记录来自响应的信息
正如客户端可以向它发送的请求添加其他检测一样,Exchange以 HTTP 标头的形式向响应添加其他检测。 客户端应捕获此信息,以与请求检测信息一起提供。
备注
如果使用 EWS 托管 API,则 HTTP 标头没有直接等效项。 但是,可以通过 ExchangeService.HttpResponseHeaders 属性访问所有 HTTP 响应头。
表 2.HTTP 响应标头
HTTP 标头 | 说明 |
---|---|
request-id |
对应于此响应的请求的服务器生成的 ID。 |
client-request-id |
请求中的 client-request-id 标头的值。 只有当请求包含值为 true 的 return-client-request-id 标头时,此标头才 存在。 |
X-FEServer |
处理请求的客户端访问服务器的 FQDN。 |
X-TargetBEServer |
处理请求的邮箱服务器的 FQDN。 |
X-DiagInfo |
其他诊断信息,具体取决于请求。 |
x-ms-diagnostics |
此标头仅在请求中使用的 OAuth 身份验证时适用。 它包含一个显式错误代码,用于指定 OAuth 身份验证失败的原因。 它采用以下格式: errorId;reason="reason"error_type="error type" 原因 字段是可读的错误描述。 errorId 字段是一个整数,错误 类型 _ 字段是 该整数的字符串表示形式,如下所示:
|
向 Microsoft 报告 EWS 延迟
如果您的应用程序使用 EWS 托管 API 或 EWS 连接到 Exchange Online,您可以直接向 Microsoft 报告 EWS 请求中的延迟。 信息通过 X-ClientStatistics 请求标头传递。 如果使用的是 EWS 托管 API,则只要将 ExchangeService.SendClientLatencies属性设置为 true。 如果使用的是 EWS,则需要测量发出请求和接收响应之间的时间,然后采用以下格式将 X-ClientStatistics 标头添加到应用程序发送的下一个 EWS 请求中。
X-ClientStatistics: MessageId=<value of request-id header>,ResponseTime=<time in milliseconds>,SoapAction=<EWS operation>
我们维护有关这些延迟的报告,并使用它们持续改进 Exchange Online。
后续步骤
将客户端检测添加到应用程序后,如果出现问题,可以更好地做好准备。 如果发生这种情况,可以使用检测数据 对应用程序进行疑难解答。