このコードで何が問題になっていますか?さらに、私はそれをどのように修正するのですか?Veracodeの「不適切なリソースのシャットダウンまたは解放」エラー、なぜですか?
public class BodyStreamMiddleware
{
private readonly RequestDelegate _next;
public BodyStreamMiddleware(RequestDelegate next) { _next = next; }
public async Task Invoke(HttpContext context)
{
// Replace the FrameRequestStream with a MemoryStream.
// This is because the MemoryStream is rewindable, the FrameRequestStream is not.
// This allows ExceptionFilters to read the body for logging purposes
string bodyAsText;
using (var bodyReader = new StreamReader(context.Request.Body))
{
bodyAsText = bodyReader.ReadToEnd();
}
var bytesToWrite = Encoding.UTF8.GetBytes(bodyAsText);
using (var memoryStream = new MemoryStream())
{
memoryStream.Write(bytesToWrite, 0, bytesToWrite.Length);
memoryStream.Seek(0, SeekOrigin.Begin);
context.Request.Body = memoryStream;
// Tell ASP.NET core to dispose the memory stream when the request ends
// (only added in desperation)
context.Response.RegisterForDispose(memoryStream);
await _next.Invoke(context);
}
}
}
それ以上私に
404不適切なリソースのシャットダウンまたはリリースを与える上で、私はのVeraCodeスキャンを実行すると、私は下流のプロセスがメモリへの参照をつかむことができることを理解し
ストリームとそれにぶら下がって、どのようにデフォルトのasp.netの動作(つまり、何かがFrameRequestStreamをつかむことができる)とは異なることを確認することができません。 ...
を他人の利益のために自分の質問に答える
'RegisterForDispose'と' using'ブロックを使い捨てにしているようです。そして再び、 'IDisposable.Dispose'は冪等であると考えられます。 'RegisterForDispose'を呼び出す場合は – Ryan
- ストリームを手動で廃棄するのはなぜですか? – Evk
... Veracodeを幸せにしようとする絶望。以前は「使用している」だけでした。私は質問を編集します。 – NeedHack