2016-04-22 12 views
2

In C# ASP.NET spielt die Reihenfolge der Middleware-Anwendung eine Rolle?Kann ich Middleware in beliebiger Reihenfolge auf die App anwenden?

Die folgenden 2 Code-Schnipsel:

public class Startup 
{ 
    ... 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     setUpMVCRoutes(app); 
     app.UseSwaggerUi("foobar/api", "/foobar/v3/api.json"); 
     app.UseSwaggerGen("foobar/{apiVersion}/api.json"); 
     app.UseDefaultFiles(); 
     app.UseIISPlatformHandler(options => options.AuthenticationDescriptions.Clear()); 
     app.UseStaticFiles(); 
     app.UseIdentity(); 
     app.UseCookieAuthentication(); 
    } 
    ... 
} 

und dieses

public class Startup 
{ 
    ... 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     app.UseIdentity(); 
     app.UseCookieAuthentication(); 
     app.UseIISPlatformHandler(options => options.AuthenticationDescriptions.Clear()); 
     app.UseDefaultFiles(); 
     app.UseStaticFiles(); 
     setUpMVCRoutes(app); 
     app.UseSwaggerGen("foobar/{apiVersion}/api.json"); 
     app.UseSwaggerUi("foobar/api", "/foobar/v3/api.json"); 
    } 
    ... 
} 

Gibt es einen Unterschied? Ich stelle mir vor, dass, wenn diese Middleware ähnlich wie Python-Dekoratoren oder nur Pipe von Funktionen funktioniert, die etwas tun und die Ergebnisse an die nächste Funktion weitergeben, dann könnte es von Bedeutung sein.

Antwort

2

Es hat nichts mit ASP.NET zu tun, sondern mit OWIN-Hosting-Implementierung.

Bestellangelegenheiten. Wenn Sie beispielsweise eine Middleware registrieren, die Fehler nach jeder anderen Middleware abhören soll, besteht die Möglichkeit, dass einige Fehler nicht protokolliert werden können.

Dies ist nur ein hypothetischer Fall, aber es kann Ihnen einen guten Hinweis darauf geben, wie andere Szenarien funktionieren, wenn Sie die Reihenfolge der Middleware-Registrierungen ändern.

oder nur Rohr von Funktionen, die etwas tun und die Ergebnisse an die nächste Funktion übergeben, dann könnte es von Bedeutung sein.

Das war's! Dies ist der Grund für , warum Bestellung wichtig ist.

+0

Nun, woher weiß ich, was nach was kommen soll? Ich wollte Middleware gruppieren, die nur in der Entwicklungsumgebung funktionieren sollte, Middleware, die nur in der Produktionsumgebung funktionieren sollte, und gemeinsame Middleware in verschiedenen Methoden. – CrabMan

+0

@crabman spezifische Middleware-Dokumente werden Ihnen sagen, ob die Bestellung zählt oder nicht und ob unsere Angelegenheiten, in welcher Reihenfolge Sie es konfigurieren sollten .. –

Verwandte Themen