現在、.NET Coreには1つのオプションがあり、より良い結果が得られる可能性があります。少なくとも私の場合、経過時間は@ollifantによって提案された方法を使用するよりも約10〜40%短くなります。私は彼の提案にとどまりますが、ストップウォッチをハンドラーに移動しました。
DelegatingHandler、例:.NETCoreDocsを使用できます。
上記のようにストップウォッチを使用することもできますが、ハンドラー自体で使用することもできます。経過時間をヘッダーに追加し、それを取得して、たとえば_GetHttpWithTimingInfoに追加し、さらに処理します。プロジェクトによっては、一部のサービスをDIして、ハンドラー自体からデータベースに期間を保存できる可能性があります。
たぶん、この解決策は@DmytroBogatovによって言及された問題も解決するかもしれません。
また、このメソッドは、 .NETCoreHTTPロギングチェックSendAsyncで直接使用されます。Stopwatchの代わりに内部ValueStopwatchを使用していることに注意してください。
これらのログは、ハンドラーでストップウォッチを使用しているのに対し、メソッドで直接使用していることを示しています。
08-11-2020 18:05:52.024 [INF] Handler: 992, _GetHttpWithTimingInfo 995
08-11-2020 18:05:52.153 [INF] Handler: 663, _GetHttpWithTimingInfo 1249
08-11-2020 18:05:52.208 [INF] Handler: 999, _GetHttpWithTimingInfo 1220
08-11-2020 18:05:52.219 [INF] Handler: 1002, _GetHttpWithTimingInfo 1241
08-11-2020 18:05:52.219 [INF] Handler: 989, _GetHttpWithTimingInfo 1217
08-11-2020 18:05:52.255 [INF] Handler: 609, _GetHttpWithTimingInfo 1302
08-11-2020 18:05:52.260 [INF] Handler: 959, _GetHttpWithTimingInfo 1267
08-11-2020 18:05:52.287 [INF] Handler: 1063, _GetHttpWithTimingInfo 1303
08-11-2020 18:05:52.292 [INF] Handler: 515, _GetHttpWithTimingInfo 1381
08-11-2020 18:05:52.296 [INF] Handler: 992, _GetHttpWithTimingInfo 1286
08-11-2020 18:05:52.321 [INF] Handler: 953, _GetHttpWithTimingInfo 1323
08-11-2020 18:05:52.324 [INF] Handler: 973, _GetHttpWithTimingInfo 1304
08-11-2020 18:05:52.326 [INF] Handler: 985, _GetHttpWithTimingInfo 1302