2016-04-22 17 views
2

C#ASP.NETでは、ミドルウェアのアプリケーションの順序は重要ですか?アプリケーションにミドルウェアを任意の順序で適用できますか?

次の2つのコードスニペット:

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(); 
    } 
    ... 
} 

この

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"); 
    } 
    ... 
} 

はどんな違いがありますか?私はこのミドルウェアがPythonデコレータや、何かをして結果を次の関数に渡す関数のパイプに似ていれば、それは重要かもしれないと思います。

答えて

2

それは、ASP.NETでなく、OWINホスティングの実装とは何の関係もありません。

注文事項。たとえば、他のミドルウェアの後でエラーをリスンするミドルウェアを登録した場合、いくつかのエラーを記録できない可能性があります。

これは単なる仮想的なケースですが、それはあなたがミドルウェアの登録の順序を変更する場合は、他のシナリオが動作できるかの良いヒントを与えることができます。

または何かをして結果を次の関数 に渡すだけの関数のパイプの場合、それは重要かもしれません。それだ

!これはなぜの注文理由がの理由です。

+0

まあ、何の後に何が来るべきか、どうすればわかるのですか?私は、開発環境でのみ動作するミドルウェア、運用環境でのみ動作するミドルウェア、異なる方法で共通のミドルウェアをグループ化したいと考えました。 – CrabMan

+0

@crabman固有のミドルウェアドキュメントは、注文が重要かどうか、そして私たちの問題がどのような順序で設定されるべきかを伝えます。 –

関連する問題