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