Visual C# Web API プログラムで HttpRequestMessage 応答に関する情報をログに記録したいと考えています。次のようなメッセージ ハンドラー (DelegatingHandler から継承) を使用したい:
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// log request.Method & request.RequestUri
var result = await base.SendAsync(request, cancellationToken);
// log first 100 chars of result.Content
return result
}
問題は、result.Content
場合によっては巨大になることです。そのため、最初の N 文字 (約 50 文字) のみを印刷するように制限したいと考えています。
私が試したこと:
toString()
を使用して全体を文字列にコピーしSubString
ます。これはまさに私が望むことですが、巨大な文字列をメモリに読み込んでから最初の数文字だけを使用するのは無駄に思えます.もっと良い方法が必要だと思います.- 文字を読み取ってストリームから削除する、インターネット上のさまざまなソリューション。ストリーム全体をそのまま送り返す必要があります。