ASP.NET Core 2.0 미들웨어(번역)
어떻게 가장 간단 한 ASP.NET 코어 미들웨어 를 만 듭 니까?
답안
VS 를 사용 하여 ASP.NET Core 2.0 의 빈 항목 을 만 듭 니 다.Startup.cs 의 Configure()방법 에 주의 하 십시오.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World! (Run)");
});
}
요청 파 이 프 를 만 드 는 방법 은 IApplicationBuilder 의 확장 방법 을 사용 하 는 것 이 좋 습 니 다.
public static void RunHelloWorld(this IApplicationBuilder app)
{
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World! (Run)");
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.RunHelloWorld();
}
실행,이 때 페이지 표시:위 에서 우 리 는 IApplicationBuilder.Run()을 사용 하여 미들웨어 를 설정 합 니 다.다른 방법 은 IApplicationBuilder.Use()입 니 다.
public static void UseHelloWorld(this IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
await context.Response.WriteAsync("Hello World! (Use)
");
await next();
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseHelloWorld();
app.RunHelloWorld();
}
실행,이 때 페이지 표시:중간 부품 을 단독 클래스 로 정의 하 는 것 이 더 좋 은 실천 방법 이다.
public class HelloWorldMiddleware
{
private readonly RequestDelegate _next;
public HelloWorldMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
await context.Response.WriteAsync("Hello World! (Use in Class)
");
await _next(context);
}
}
public static class UseHelloWorldInClassExtensions
{
public static IApplicationBuilder UseHelloWorldInClass(this IApplicationBuilder app)
{
return app.UseMiddleware<HelloWorldMiddleware>();
}
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseHelloWorld();
app.UseHelloWorldInClass();
app.RunHelloWorld();
}
실행,이 때 페이지 표시:토론 하 다.
미들웨어 는 HTTP 요청 과 응답 메 시 지 를 차단 하 는 구성 요소 입 니 다.우 리 는 이 구성 요소 체인 을 만들어 서 프로그램 에 요청 파 이 프 를 만 듭 니 다.
우 리 는 Configure()방법의 IApplicationBuilder 인 자 를 통 해 이 요청 파 이 프 를 만 듭 니 다.IApplicationBuilder 인 자 는 다음 과 같은 방법 이 있 습 니 다.
이 방법 은 RequestDelegate 의뢰 를 매개 변수 로 받 아들 이 고 의뢰 방법 이 호출 될 때 HttpContext 인 자 를 받 습 니 다.이 의뢰 방법 은 요청 파 이 프 를 종료 하기 때문에 void 로 돌아 갑 니 다.
Use
이 방법 은 Func 의뢰 를 매개 변수 로 받 습 니 다.이 의뢰 방법 은 HttpContext 와 다음 미들웨어 를 가리 키 는 next 두 개의 매개 변수 가 있 습 니 다.빈 상태 로 돌아 갑 니 다(Task).다음 미들웨어 를 호출 하지 않 으 면 요청 파 이 프 를 종료 합 니 다(Run 효과 와 같 습 니 다).
UserMiddleware
단독 클래스 를 통 해 미들웨어 를 만 들 때 저 희 는 UseMiddleware 방법 을 사용 하고 구체 적 인 실현 유형 을 일반적인 매개 변수 로 합 니 다.
중간 부품 류 중 두 부분 이 매우 중요 하 다.
1.구조 함 수 는 RequestDelegate 를 받아들인다.이 의뢰 를 호출 할 때 현재 요청 을 다음 미들웨어 로 전송 합 니 다.
2.HttpContext 인 자 를 받 고 빈 곳 으로 돌아 가 는 Invoke 방법 이 있 습 니 다(Task).중간 부품 을 사용 해 야 할 때 프레임 워 크 는 이 방법 을 주동 적 으로 호출 합 니 다.
주:단독 클래스 에서 미들웨어 를 실현 하고 UseMiddleware 로 포장 하 는 것 이 가장 좋 은 실천 입 니 다.
확장 방법
확장 방법의 차이 점 을 주의해 야 합 니 다.RunXXX 은 값 을 되 돌려 주지 않 고 UseXXX 는 값 을 되 돌려 줍 니 다(IApplicationBuilder).Run()이 요청 파 이 프 를 종료 하고 Use()가 다른 미들웨어 로 연 결 될 수 있 기 때 문 입 니 다.
차례
중간 부품 은 Configure()방법 에 따라 순서대로 호출 됩 니 다.클 라 이언 트 로 돌아 가 는 응답 도 같은 미들웨어 파 이 프 를 겪 습 니 다.
소스 코드 다운로드
원문
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
.Net Core Excel 템플릿 읽기 Excel 파일 내보내기텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.