3
ミドルウェアにHttpContextのインスタンスを格納するのは安全ですか?HttpContext .NETミドルウェアのコア保存インスタンス
例:
public class TestMiddleware
{
private readonly RequestDelegate next;
private HttpContext context;
public TestMiddleware(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(HttpContext context)
{
try
{
this.context = context;
私はそれで動作するように他の民間の方法でそれを使用したいと思いますので、私は、これらの関数にパラメータとして、それを周りに渡すかの例に示すように、それを使用することができます。
でもスレッドセーフですか?
「ミドルウェアは必ずシングルトンだと思いますか? – haim770
@ haim770これらは起動時にインスタンス化され、要求パイプラインに追加されます。これは不変です:https://github.com/aspnet/HttpAbstractions/blob/dev/src/Microsoft.AspNetCore.Http.Abstractions/Extensions/UseMiddlewareExtensions.cs #L43-L94 – Pinpoint
@ haim770あなたが私を信頼しないなら、確認するのは簡単です:カスタムミドルウェアを作成し、そのコンストラクタにブレークポイントを設定します。起動時に1回だけ呼び出されることがわかります。 – Pinpoint