中间件中的HttpContext .NET核心保存实例

Pre*_*rem 5 c# asp.net-web-api2 asp.net-core

将HttpContext实例存储在中间件中是否安全?

例:

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;
Run Code Online (Sandbox Code Playgroud)

我想在其他私有方法中使用它来处理它,所以我可以将它作为参数传递给那些函数或使用它,如示例中所示.

但它是否安全?

Kév*_*let 8

但它是否安全?

不,不是,因为中间件必然是单身人士.如果您将特定HttpContext字段存储在共享字段中,则可能会在另一个请求期间重复使用它(这将是非常糟糕的).