HostingStartup에 미들웨어를 등록하는 방법은 무엇입니까?

루오 티안치

배경

원래 프로젝트 코드를 변경하지 않고 플러그인을 등록하여 추가 미들웨어를 추가 하고 싶지만 , 플러그인에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를 명시 적으로 호출하지 않고 IStartupFilterConfigure미들웨어 파이프 라인 의 시작 또는 끝에 미들웨어를 구성하는 데 사용 합니다 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

미들웨어에서 변수를 얻는 방법은 무엇입니까?

분류에서Dev

typescript에서 sinon을 사용하여 Express 미들웨어를 스텁하는 방법은 무엇입니까?

분류에서Dev

커스텀 미들웨어 내에서 csurf를 사용하는 방법은 무엇입니까?

분류에서Dev

그래 핀에서 리졸버 후 미들웨어를 사용하는 방법은 무엇입니까?

분류에서Dev

strapi에서 커스텀 미들웨어를 설정하는 방법은 무엇입니까?

분류에서Dev

미들웨어에서 ExpressJS로 오류를 반환하는 방법은 무엇입니까?

분류에서Dev

Express 4.0 라우터 미들웨어에서 MongoClient 객체를 재사용하는 방법은 무엇입니까?

분류에서Dev

링 미들웨어를 특정 경로 그룹에 적용하는 방법은 무엇입니까?

분류에서Dev

Slim 3-경로에 여러 미들웨어 클래스를 추가하는 방법은 무엇입니까?

분류에서Dev

KrakenJS에서 다른 것보다 먼저 Passport 미들웨어를 선언하는 방법은 무엇입니까?

분류에서Dev

Laravel에서 auth : api passport 미들웨어로 CORS 미들웨어를 추가하는 방법은 무엇입니까?

분류에서Dev

미들웨어에서 객체 데이터를 얻는 방법은 무엇입니까?

분류에서Dev

IRC 사용자를 freenode에 등록하는 방법은 무엇입니까?

분류에서Dev

장고에서 조회를 등록하는 방법은 무엇입니까?

분류에서Dev

IRC 사용자를 freenode에 등록하는 방법은 무엇입니까?

분류에서Dev

didMoveToView (Swift, SpriteKit)에 터치를 등록하는 방법은 무엇입니까?

분류에서Dev

Rails 앱에 serviceWorker를 등록하는 방법은 무엇입니까?

분류에서Dev

컨테이너를 조경에 등록하는 방법은 무엇입니까?

분류에서Dev

서버를 다시 만들지 않고 Express에서 미들웨어를 테스트하는 간단한 방법은 무엇입니까?

분류에서Dev

특정 / 다른 요청 방법에 대해 NEST JS에서 여러 미들웨어를 처리하는 방법은 무엇입니까?

분류에서Dev

워드 프레스와 SQL 쿼리 사이에 미들웨어를 주입하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

미들웨어에서 Express.js의 경로로 값을 전달하는 방법은 무엇입니까?

분류에서Dev

미들웨어에서 socket.io로 변경 사항을 전달하는 방법은 무엇입니까?

분류에서Dev

미들웨어에서 설정을 변경하는 방법은 무엇입니까?

분류에서Dev

Python, Django-미들웨어에 http 요청을 저장하는 방법은 무엇입니까?

분류에서Dev

asp.net 코어에서 미들웨어를 커스텀 라우터로 작성하는 방법은 무엇입니까?

분류에서Dev

io.use 미들웨어를 처리하여 클라이언트에서 오류를 캡처하는 방법은 무엇입니까?

분류에서Dev

Laravel에서 여러 유형의 관리자를 위해 미들웨어를 사용하는 방법은 무엇입니까?

분류에서Dev

Django에서 미들웨어를 사용하여 세션 및 토큰 기반 인증을 동시에 처리하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    미들웨어에서 변수를 얻는 방법은 무엇입니까?

  2. 2

    typescript에서 sinon을 사용하여 Express 미들웨어를 스텁하는 방법은 무엇입니까?

  3. 3

    커스텀 미들웨어 내에서 csurf를 사용하는 방법은 무엇입니까?

  4. 4

    그래 핀에서 리졸버 후 미들웨어를 사용하는 방법은 무엇입니까?

  5. 5

    strapi에서 커스텀 미들웨어를 설정하는 방법은 무엇입니까?

  6. 6

    미들웨어에서 ExpressJS로 오류를 반환하는 방법은 무엇입니까?

  7. 7

    Express 4.0 라우터 미들웨어에서 MongoClient 객체를 재사용하는 방법은 무엇입니까?

  8. 8

    링 미들웨어를 특정 경로 그룹에 적용하는 방법은 무엇입니까?

  9. 9

    Slim 3-경로에 여러 미들웨어 클래스를 추가하는 방법은 무엇입니까?

  10. 10

    KrakenJS에서 다른 것보다 먼저 Passport 미들웨어를 선언하는 방법은 무엇입니까?

  11. 11

    Laravel에서 auth : api passport 미들웨어로 CORS 미들웨어를 추가하는 방법은 무엇입니까?

  12. 12

    미들웨어에서 객체 데이터를 얻는 방법은 무엇입니까?

  13. 13

    IRC 사용자를 freenode에 등록하는 방법은 무엇입니까?

  14. 14

    장고에서 조회를 등록하는 방법은 무엇입니까?

  15. 15

    IRC 사용자를 freenode에 등록하는 방법은 무엇입니까?

  16. 16

    didMoveToView (Swift, SpriteKit)에 터치를 등록하는 방법은 무엇입니까?

  17. 17

    Rails 앱에 serviceWorker를 등록하는 방법은 무엇입니까?

  18. 18

    컨테이너를 조경에 등록하는 방법은 무엇입니까?

  19. 19

    서버를 다시 만들지 않고 Express에서 미들웨어를 테스트하는 간단한 방법은 무엇입니까?

  20. 20

    특정 / 다른 요청 방법에 대해 NEST JS에서 여러 미들웨어를 처리하는 방법은 무엇입니까?

  21. 21

    워드 프레스와 SQL 쿼리 사이에 미들웨어를 주입하는 가장 좋은 방법은 무엇입니까?

  22. 22

    미들웨어에서 Express.js의 경로로 값을 전달하는 방법은 무엇입니까?

  23. 23

    미들웨어에서 socket.io로 변경 사항을 전달하는 방법은 무엇입니까?

  24. 24

    미들웨어에서 설정을 변경하는 방법은 무엇입니까?

  25. 25

    Python, Django-미들웨어에 http 요청을 저장하는 방법은 무엇입니까?

  26. 26

    asp.net 코어에서 미들웨어를 커스텀 라우터로 작성하는 방법은 무엇입니까?

  27. 27

    io.use 미들웨어를 처리하여 클라이언트에서 오류를 캡처하는 방법은 무엇입니까?

  28. 28

    Laravel에서 여러 유형의 관리자를 위해 미들웨어를 사용하는 방법은 무엇입니까?

  29. 29

    Django에서 미들웨어를 사용하여 세션 및 토큰 기반 인증을 동시에 처리하는 방법은 무엇입니까?

뜨겁다태그

보관