为什么 AWS XRay 在 AspNetCore 中需要 'UseExceptionHandler' 和 'UseStaticFiles'?

Why does AWS XRay require 'UseExceptionHandler' and 'UseStaticFiles' in AspNetCore?

我在 Api 网关下的一个 Lambda API 中关注 Amazon's documentation to enable XRay,我注意到它告诉您向配置添加 3 个中间件:

第一个和第三个中间件是本机 AspNet 集成,而第二个是实际的 Amazon XRay 实现。该文档从未说明为什么需要其他 2 个。相反,它对订购有这样的说法:

Always call UseXRay after UseExceptionHandler to record exceptions. If you use other middleware, enable it after you call UseXRay.

我不清楚异常处理程序是否 必需,或者它们是否只是意味着“如果您碰巧拥有它,请在它之后添加 XRay”。

文档未提及 UseStaticFiles

我想知道为什么 Amazon 让我在继续更改之前添加这些其他中间件。如果确实需要添加它们,必须有这样做的书面理由。

特别是,这给我带来了一些问题 UseExceptionHandlerwhich doesn't appear to be working correctly with an OData-enabled API 这是我目前的情况。

使用 X-Ray 中间件时,无需使用异常或静态文件处理程序。但是如果你的应用程序中已经有一个异常处理程序并且你想记录内部异常堆栈,请确保调用:

  1. UseXRay 在 .NET Core 2.0 中 UseExceptionHandler 之后。
  2. UseXRay 在 .NET Core 2.1 及更高版本中 http 管道的开头。

参见:https://github.com/aws/aws-xray-sdk-dotnet/tree/master#aspnet-core-framework-net-core--nuget