ホームページ > バックエンド開発 > C#.Net チュートリアル > C# ASP.NET Core ミドルウェアは HttpModule とどう違うのですか?

C# ASP.NET Core ミドルウェアは HttpModule とどう違うのですか?

PHPz
リリース: 2023-08-28 10:21:10
転載
663 人が閲覧しました

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

web.config または global.asax を通じて設定された HttpModules 開発者は実行順序を制御できません。

モジュールの順序は主にアプリケーションのライフサイクル イベントに基づいているためです。 リクエストとレスポンスの実行順序は変わりません。

HttpModules は、アプリケーション イベントに固有のコードを添付するのに役立ちます。 HttpModule は System.web にバインドされます。

ミドルウェアは、web.config ファイル (エントリ ポイント) ではなく、Startup.cs コードで構成されます。 アプリケーションの場合)

HttpModuleと異なり、getの実行内容や実行順序を完全に制御できます。として これらは追加された順に実行されます。

ミドルウェアの応答の順序は、リクエストの順序とは逆になります。

ミドルウェアはこれらのイベントから独立しています。

ミドルウェアはホストから独立しています。

組み込みの Asp.Net コア ミドルウェア

認証 認証サポートを提供します。

CORS クロスドメインのリソース共有を構成します。

ルーティング リクエストのルーティングを定義および制限します。

Session ユーザー セッションの管理のサポートを提供します。

診断 エラー ページとランタイム情報のサポートが含まれます。

Example

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
   }
}
ログイン後にコピー

// HTTP リクエスト パイプラインにミドルウェアを追加するための拡張メソッド。

public static class MyMiddlewareExtensions{
   public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder
   builder){
      return builder.UseMiddleware<MyMiddleware>();
   }
}
ログイン後にコピー

//拡張メソッドを次のように使用して、リクエスト パイプラインにカスタム ミドルウェアを追加します。 以下に示すように

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.UseMiddleware<MyMiddleware>()
   app.Run(async (context) =>{
      await context.Response.WriteAsync("Hello World!");
   });
}
ログイン後にコピー

以上がC# ASP.NET Core ミドルウェアは HttpModule とどう違うのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート