원래 프로젝트 코드를 변경하지 않고 플러그인을 등록하여 추가 미들웨어를 추가 하고 싶지만 , 플러그인에IApplicationBuilder
미들웨어를 등록하는 데 필요한 것을 얻는 방법이 현재 가장 큰 문제입니다. Hosting Startup Document 에 따르면 플러그인은 상속 하여 등록 할 수 있으며 프로젝트가 시작될 때 자동으로로드됩니다. 예 :IHostingStartup
// plugin
public class MyStartup: IHostingStartup
{
// Implement the IHostingStartup interface
public void Configure(IWebHostBuilder builder)
{
// TODO: I want to get an IApplicationBuilder object to register middleware
}
}
어떻게 IApplicationBuilder
물건을 IWebHostBuilder
얻는가?
공식 문서에서 시작 필터로 시작 확장IStartupFilter
은 여기에 유용 할 수있는 내용을 설명합니다 .
.NET Framework를 명시 적으로 호출하지 않고
IStartupFilter
앱Configure
미들웨어 파이프 라인 의 시작 또는 끝에 미들웨어를 구성하는 데 사용 합니다Use{Middleware}
.
다음은 샘플 구현입니다.
public class MyStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return app =>
{
app.UseMiddleware<MyMiddleware>();
next(applicationBuilder);
};
}
}
이 예에서는 파이프 라인 MyMiddleware
의 시작 부분 에 추가 합니다. 즉 , 나머지 파이프 라인 보다 먼저 실행됩니다 . 파이프 라인 MyMiddleware
의 끝 에서 실행하려면 app.UseMiddleware
및 의 순서를 전환하십시오 next
.
또한 다음과 같이 DI 컨테이너에이 구현을 등록해야합니다.
// plugin
public class MyStartup : IHostingStartup
{
// Implement the IHostingStartup interface
public void Configure(IWebHostBuilder builder)
{
builder.ConfigureServices(services =>
{
services.AddTransient<IStartupFilter, MyStartupFilter>();
});
}
}
이 방법은 효과가 있지만 필요한만큼 유연하지는 않습니다. 예를 들어, 앱에서 추가 한 미들웨어 사이에 미들웨어 를 주입 할 수 없습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다