Ist es sicher, eine Instanz von HttpContext in einer Middleware zu speichern?HttpContext .NET Kern speichern Instanz in Middleware
Beispiel:
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;
Ich mag es in anderen privaten Methoden verwenden, um daran zu arbeiten, so kann ich es entweder passiere um als Parameter an jene Funktion oder verwenden Sie es wie im Beispiel gezeigt.
Aber ist es threadsicher?
Was lässt Sie denken, dass "Middlewares notwendigerweise Singletons" sind? – haim770
@ haim770 sie werden während des Starts instanziiert und der Request-Pipeline hinzugefügt, die unveränderlich ist: https://github.com/aspnet/HttpAbstractions/blob/dev/src/Microsoft.AspNetCore.Http.Abstractions/Extensions/UseMiddlewareExtensions.cs # L43-L94 – Pinpoint
@ haim770 Wenn Sie mir nicht vertrauen, ist es einfach zu bestätigen: Erstellen Sie eine benutzerdefinierte Middleware und setzen Sie einen Haltepunkt in den Konstruktor. Sie werden sehen, dass es beim Start nur einmal aufgerufen wird. – Pinpoint