>백엔드 개발 >C#.Net 튜토리얼 >C# ASP.NET Core 미들웨어는 HttpModule과 어떻게 다릅니까?

C# ASP.NET Core 미들웨어는 HttpModule과 어떻게 다릅니까?

PHPz
PHPz앞으로
2023-08-28 10:21:10651검색

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

web.config 또는 global.asax를 통해 구성된 HttpModule 개발자는 실행 순서를 제어할 수 없습니다.

모듈 순서는 주로 애플리케이션 수명 주기 이벤트를 기반으로 하기 때문입니다. 요청과 응답의 실행 순서는 동일하게 유지됩니다.

HttpModules는 애플리케이션 이벤트에 특정한 코드를 첨부하는 데 도움이 됩니다. HttpModule은 System.web에 바인딩됩니다.

미들웨어는 web.config 파일(진입점)이 아닌 Startup.cs 코드에서 구성됩니다. 애플리케이션의 경우)

HttpModule과 달리 실행 대상과 실행 순서를 완전히 제어할 수 있습니다. ~처럼 추가된 순서대로 실행됩니다.

미들웨어는 요청의 역순으로 응답합니다.

미들웨어는 이러한 이벤트와 무관합니다.

미들웨어는 호스트 독립적입니다.

내장 Asp.Net 코어 미들웨어

인증 인증 지원을 제공합니다.

CORS 도메인 간 리소스 공유를 구성합니다.

Routes 요청 라우팅을 정의하고 제한합니다.

Session 사용자 세션 관리를 지원합니다.

Diagnostics 오류 페이지 및 런타임 정보에 대한 지원이 포함됩니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제