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

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

PHPz
PHPz転載
2023-08-28 10:21:10608ブラウズ

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 までご連絡ください。