IApplicationBuilder.Use()とIApplicationBuilder.Run()C#Asp.net Coreの違いは何ですか?
IApplicationBuilderインスタンスを使用して、StartupクラスのConfigureメソッドでミドルウェアを構成できます。
Run()は、アプリケーションのリクエストパイプラインにターミナルミドルウェアを追加するIApplicationBuilderインスタンスの拡張メソッドです。
RunメソッドはIApplicationBuilderの拡張メソッドであり、RequestDelegateのパラメーターを受け入れます。
Runメソッドの署名
public static void Run(this IApplicationBuilder app, RequestDelegate handler)
RequestDelegateの署名
public delegate Task RequestDelegate(HttpContext context);
例
public class Startup{ public Startup(){ } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){ //configure middleware using IApplicationBuilder here.. app.Run(async (context) =>{ await context.Response.WriteAsync("Hello World!"); }); // other code removed for clarity.. } }
上記のMyMiddleware関数は非同期ではないため、実行が完了するまでスレッドをブロックします。したがって、async andawaitを使用して非同期にし、パフォーマンスとスケーラビリティを向上させます。
public class Startup{ public Startup(){ } public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Run(MyMiddleware); } private async Task MyMiddleware(HttpContext context){ await context.Response.WriteAsync("Hello World! "); } }
Run()を使用して複数のミドルウェアを構成する
以下は常に最初のRunメソッドを実行し、2番目のRunメソッドに到達することはありません
public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Run(async (context) =>{ await context.Response.WriteAsync("1st Middleware"); }); // the following will never be executed app.Run(async (context) =>{ await context.Response.WriteAsync(" 2nd Middleware"); }); }
使用
複数のミドルウェアを構成するには、Use()拡張メソッドを使用します。 Run()メソッドに似ていますが、シーケンス内の次のミドルウェアを呼び出すための次のパラメーターが含まれている点が異なります
public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Use(async (context, next) =>{ await context.Response.WriteAsync("1st Middleware!"); await next(); }); app.Run(async (context) =>{ await context.Response.WriteAsync("2nd Middleware"); }); }
-
C#ASP.NETWebAPIのFromBody属性とFromUri属性の違いは何ですか?
ASP.NET Web APIがコントローラーのメソッドを呼び出すときは、パラメーターの値を設定する必要があります。これは、パラメーターバインディングと呼ばれるプロセスです。 モデル(アクションパラメーター)をバインドするには、通常はフォーマッターにデフォルト設定されますが、URIから[FromUri]属性でモデルを装飾する必要があります。 FromUriAttributeは、ModelBinderAttributeから継承するだけで、IUriValueProviderFactoryで定義されたValueProviderを使用してURIから特定のパラメーターを取得するようにWebAPIに指示
-
C#のリストと辞書の違いは何ですか?
辞書は、C#のキーと値のコレクションです。 Dictionary は、System.Collection.Generics名前空間に含まれています。辞書はジェネリック型であり、そこにないキーを見つけようとするとエラーを返します。 リストコレクションはジェネリッククラスであり、リストを作成するために任意のデータ型を格納できます。 リストはアイテムのグループです- List<string> myList = new List<string>() { "Maths", "English&qu