Heim  >  Artikel  >  Backend-Entwicklung  >  Wie unterscheidet sich die C# ASP.NET Core-Middleware von HttpModule?

Wie unterscheidet sich die C# ASP.NET Core-Middleware von HttpModule?

PHPz
PHPznach vorne
2023-08-28 10:21:10608Durchsuche

C# ASP.NET Core 中间件与 HttpModule 有何不同?

HttpModule, konfiguriert über web.config oder global.asax Der Entwickler hat keine Kontrolle über die Reihenfolge der Ausführung.

Denn die Reihenfolge der Module basiert hauptsächlich auf Ereignissen im Anwendungslebenszyklus. Die Ausführungsreihenfolge von Anfragen und Antworten bleibt gleich.

HttpModules hilft Ihnen, Code speziell für Ihre Anwendungsereignisse anzuhängen. HttpModules sind an System.web gebunden.

Middleware wird im Startup.cs-Code konfiguriert, nicht in der web.config-Datei (Einstiegspunkt). Für Anwendungen)

Im Gegensatz zu HttpModule haben Sie die vollständige Kontrolle darüber, was ausgeführt wird und in welcher Reihenfolge es ausgeführt wird. als Sie werden in der Reihenfolge ausgeführt, in der sie hinzugefügt werden.

Middleware antwortet in umgekehrter Reihenfolge der Anfragen.

Middleware ist unabhängig von diesen Ereignissen.

Middleware ist hostunabhängig.

Integrierte Asp.Net-Kern-Middleware

Authentifizierung Bietet Authentifizierungsunterstützung.

CORS Konfigurieren Sie die domänenübergreifende Ressourcenfreigabe.

Routen Anforderungsrouting definieren und einschränken.

Session Bietet Unterstützung für die Verwaltung von Benutzersitzungen.

Diagnose Beinhaltet Unterstützung für Fehlerseiten und Laufzeitinformationen.

Beispiel

public class MyMiddleware{
   private readonly RequestDelegate _next;
   private readonly ILogger _logger;
   public MyMiddleware(RequestDelegate next, ILoggerFactory logFactory){
      _next = next;
      _logger = logFactory.CreateLogger("MyMiddleware");
   }
   public async Task Invoke(HttpContext httpContext){
      _logger.LogInformation("MyMiddleware executing..");
      await _next(httpContext); // calling next middleware
   }
}

// Erweiterungsmethode zum Hinzufügen von Middleware zur HTTP-Anforderungspipeline.

public static class MyMiddlewareExtensions{
   public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder
   builder){
      return builder.UseMiddleware<MyMiddleware>();
   }
}

//Fügen Sie benutzerdefinierte Middleware zur Anforderungspipeline hinzu, indem Sie die Erweiterungsmethode as verwenden Wie unten gezeigt

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.UseMiddleware<MyMiddleware>()
   app.Run(async (context) =>{
      await context.Response.WriteAsync("Hello World!");
   });
}

Das obige ist der detaillierte Inhalt vonWie unterscheidet sich die C# ASP.NET Core-Middleware von HttpModule?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen