이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 51405|회답: 5

[ASP.NET] asp.net IHttpModule 인터페이스에 대해 자세히 설명합니다

[링크 복사]
게시됨 2018. 3. 13. 오후 9:46:06 | | | |
앞에 적혀 있습니다

IHttpModule의 관련 내용에 대해서도 면접에서 질문을 받았는데, 이 인터페이스에 Init 메서드가 있어 구현 클래스에서 Init 메서드로 일련의 이벤트를 등록할 수 있는 것 같다는 느낌이 들었습니다. 이번 주말 집에서는 이 지식의 빈틈을 확인하고 채우는 것조차도 할 일이 거의 없습니다.

IHttp모듈 작동

asp.net 라이프사이클에 익숙한 친구들은 HttpModule 실행이 HttpHandler 이전에 실행되며, HttpModule 일련의 이벤트를 실행한 후, HttpHandler를 실행한 후 HttpModule의 일부 이벤트를 실행한다는 것을 알고 있을 것입니다. 자세한 내용은 다음 생애주기 다이어그램을 참고하시기 바랍니다.



HttpHandler는 http 요청을 처리하는 곳이고, HttpModule은 HTTP 요청의 "유일한 방법"입니다. 따라서 HTTP 요청이 실제 요청 처리 센터(HttpHandler)로 전달되기 전에 필요한 정보를 추가하거나, 가로챈 HTTP 요청 정보를 추가로 처리할 수 있습니다. 또는 경우에 따라 특정 조건을 충족하는 HTTP 요청을 단순히 종료하여 필터 역할을 할 수도 있습니다.

HTTP 요청은 HttpModule 컨테이너를 전달하는 어느 시점(ResolveRequestCache 이벤트)에 전달됩니다. 이 이벤트 이후, HttpModule 컨테이너는 HttpHandler의 인그레스 인스턴스를 생성하지만, HTTP 요청 제어권을 포기하는 대신 AcquireRequestState와 PreRequestHandlerExcute 이벤트를 계속 실행합니다. PreRequestHandlerExcute 이벤트 이후, HttpModule 창은 일시적으로 실제 HTTP 요청 처리를 위한 HttpHandler 컨테이너에 제어 권한을 부여합니다.

HttpHandler 컨테이너 내에서는 ProcessRequest 메서드가 HTTP 요청을 처리하기 위해 실행됩니다. 컨테이너 HttpHandler가 전체 HTTP 요청을 처리한 후, 제어권을 HttpModule에 반환하고, HttpModule은 처리된 HTTP 요청 정보 흐름을 층별로 계속 전달하여 클라이언트로 반환합니다.

한 가지 사례

프로젝트 구조



MyHttpModule 코드

web.config에 커스텀 HttpModule 등록하세요

페이지 Default.aspx 둘러보기



그렇다면 생애 주기에서 일련의 사건들이 실행되는 순서는 무엇일까요?


결과를 둘러보기



HttpModule 사용으로 Http 요청을 종료하세요


결과



요약

여기서는 asp.net 라이프사이클에서 가장 중요한 인터페이스인 IHttpModule을 소개하는데, 이는 이벤트 인터페이스로 설명할 수 있습니다. 구현 클래스의 Init 메서드에서는 라이프사이클 내 다양한 이벤트를 등록할 수 있고, 이벤트에서 다양한 로직을 정의할 수 있기 때문입니다.





이전의:Asp.Net IHttpHandler가 도입되었습니다
다음:C#은 적절한 속성이나 메서드로 이 헤더 우회 방법을 수정해야 합니다
 집주인| 게시됨 2018. 3. 13. 오후 9:46:47 |
. NETFramework 4.5는 25개의 표준 이벤트를 제공합니다.


 집주인| 게시됨 2018. 3. 13. 오후 9:47:03 |
. NETFramework 4.0은 19개의 표준 이벤트를 제공합니다.

1. BeginRequest: 요청 처리 asp.net 시작하는 첫 이벤트로, 처리 시작을 나타냅니다.

2. AuthenticateRequest: 일반적으로 요청의 사용자 정보를 얻기 위해 사용되는 인증 요청입니다.

3. PostAuthenticateRequest: 요청된 사용자 정보입니다.

4. 권한 부여: 권한 부여, 일반적으로 사용자의 요청이 권한이 부여되었는지 확인하는 데 사용됩니다.

5. PostAuthorizeRequest: 사용자 요청이 승인되었습니다.

6. ResolveRequestCache: 이전 처리 캐시의 처리 결과를 얻는데, 이전에 캐시된 적이 있다면 요청을 처리할 필요가 없고 캐시된 결과를 직접 반환합니다.

7. PostResolveRequestCache: 캐시가 처리되었습니다.

8. PostMapRequestHandler: 사용자의 요청에 따라 요청된 프로세서 객체가 생성되었습니다.

9. AcquireRequestState: 일반적으로 세션에 사용되는 요청의 상태를 얻습니다

10. PostAcquireRequestState: 세션이 확보되었습니다

11. PreRequestHandlerExecute: 실행 핸들러를 준비합니다.

12. PostRequestHandlerExecute: 핸들러가 실행되었습니다

13. ReleaseRequestState: 릴리스 요청의 상태.

14. PostReleaseRequestState: 요청 상태가 공개되었습니다.

15. UpdateRequestCache: 캐시를 업데이트하세요.

16. PostUpdateRequestCache: 캐시가 업데이트되었습니다.

17. 로그요청: 요청된 로그 작업

18. PostLogRequest: 요청의 로그 작업이 완료되었습니다.

19. EndRequest: 요청이 처리됩니다.
게시됨 2019. 4. 22. 오전 9:48:33 |
즐겨찾기
게시됨 2021. 9. 30. 오후 7:19:09 |
최근에 공부하고 있습니다. 잘 읽어보세요
 집주인| 게시됨 2023. 7. 14. 오후 8:26:36 |
ASP.NET MVC는 IHttpModule 모듈을 기반으로 요청을 집계합니다
https://www.itsvse.com/thread-10627-1-1.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com