목차
요청 처리 파이프라인" >요청 처리 파이프라인
HttpApplication 및 HttpModule" >HttpApplication 및 HttpModule
HTTP 요청은 결국 처리를 위해 HttpHanler에 들어갑니다. HTTP 요청은 하나의 HttpHandler에서만 처리할 수 있습니다. " >HTTP 요청은 결국 처리를 위해 HttpHanler에 들어갑니다. HTTP 요청은 하나의 HttpHandler에서만 처리할 수 있습니다.
Filters" >Filters
ActionResult" >ActionResult
请求生命周期" >请求生命周期
课程推荐" >课程推荐
백엔드 개발 C#.Net 튜토리얼 ASP.NET MVC5 요청 처리 파이프라인 및 수명 주기에 대한 자세한 자습서

ASP.NET MVC5 요청 처리 파이프라인 및 수명 주기에 대한 자세한 자습서

Apr 23, 2017 pm 04:29 PM

요청 처리 파이프라인

요청 파이프라인은 HTTP 요청을 처리하는 데 사용되는 모듈의 조합입니다. ASP.NET에서 요청 파이프라인에는 두 가지 핵심 구성 요소가 있습니다. : IHttpModule 그리고 IHttpHandler. 모든 HTTP 요청은 IHttpHandler을 입력하고 IHttpHandlerIHttpModule 개체의 이벤트를 구독하여 HttpApplicationIHttpHandler HTTP 요청을 처리하기 전에 요청을 전처리할 수 있습니다. HTTP 요청을 처리한 후 다시 처리합니다. IHttpHandler

IIS6이나 IIS5와 같은 IIS7 이전에는 요청 처리 파이프라인이 IIS 요청 처리 파이프라인과 ASP.NET 파이프라인으로 나누어져 있었습니다. 클라이언트가 정적 리소스를 요청하면 IIS 파이프라인만 처리하게 되었고, ASP.NET 요청이 파이프라인에서 처리되지 않습니다. IIS7부터 두 파이프라인이 하나로 결합되어 통합 파이프라인이라고 합니다.


위 그림에서는 너무 자세히 설명하지 않고 주로 ASP.NET 런타임에 의한 HTTP 요청 처리를 설명합니다.

HttpApplication 및 HttpModule

HTTP 요청이 ASP.NET 런타임에 의해 인계된 후

은 또는 HttpRun<a href="http://www.php.cn/wiki/1268.html" target="_blank">time</a>에서 개체 풀에서 HttpApplicationFactory 개체를 꺼내면(.NET의 유사한 메커니즘에는 스레드 풀과 HttpApplication 문자열 보관 풀이 포함됨) ASP.NET이 구성 파일 등록된 HttpApplication은 초기화 중에 HTTP 요청을 처리하기 위해 HttpApplication의 이벤트를 구독합니다. HttpModuleASP.NET HttpModuleMVC

5에서

클래스는 파일에 정의되고 Global.asax 클래스에서 MvcApplication을 상속합니다. HttpApplication

public class MvcApplication : System.Web.HttpApplication
{    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RouteTable.Routes.Add("xfhHandler", new Route(           "{controller}/{action}",            new RouteValueDictionary(new Dictionary<string, object>() { ["controller"] = "home", ["action"] = "index" }),            new XfhUrlRouteHandler())
        );        //RouteConfig.RegisterRoutes(RouteTable.Routes);    }
}
로그인 후 복사


메소드가 먼저 실행됩니다. 일반적으로 이 메소드에는

경로

등록, 전역 Application_Start()필터 등록 등 . 경로

HTTP 요청은 하나 이상의 에 의해 처리됩니다. 은 매우 중요한 모듈로, 라우팅 시스템의 핵심입니다. 라우팅 시스템의 책임은 요청 URL에서 컨트롤러 및 작업 이름과

기타

요청 데이터를 얻는 것입니다. HttpModuleUrlRoutingModule은 현재 요청된 URL과 에 등록된 라우팅 템플릿을 일치시키고, 현재 요청과 일치하는 첫 번째 경로 객체 를 반환한 후, 경로 객체
를 기반으로 라우팅 데이터 객체를 얻는다. (ASP.NET MVC에서 라우팅 데이터에는 컨트롤러 및 작업의 이름이 포함되어야 합니다.) UrlRoutingModule을 사용하여 RouteTable를 가져오고 마지막으로 Route을 사용하여 RouteData을 가져옵니다. RouteDataIRouteHandlerIRouteHandlerIHttpHandlerHttpHandler

HTTP 요청은 결국 처리를 위해 HttpHanler에 들어갑니다. HTTP 요청은 하나의 HttpHandler에서만 처리할 수 있습니다.

Controller

메서드에서 현재 요청을 처리하고, 이 메서드에서는

를 전달하여그런 다음 Reflection을 통해

의 유형을 얻으세요. IHttpHandlerProcessRequestControllerBuilderIControllerFactoryActionController

ASP.NET MVC에서 메서드에서 모든 의 기본 클래스입니다. of the type

에 대한 호출은

ControllerBase 메소드를 통해 실행됩니다. Controller 실행 전 Execute 모델 IActionInvoker 바인딩 및 모델 인증 작업이 수행됩니다. InvokeAction

Filters

在ASP.NET MVC5中有常用的过滤器有5个:IAuthenticationFilterIAuthorizationFilterIActionFilterIResultFilterI<a href="http://www.php.cn/wiki/265.html" target="_blank">Exception</a>Filter
在ASP.NET MVC中所有的过滤器最终都会被封装为Filter对象,该对象中FilterScope类型的属性Scopeint类型属性<a href="http://www.php.cn/wiki/1360.html" target="_blank">Ord</a>er用于决定过滤器执行的先后顺序,具体规则如下:

  • OrderFilterScope的数值越小,过滤器的执行优先级越高;

  • OrderFilterScope具有更高的优先级,在Order属性值相同时才会被考虑


//数值越小,执行优先级越高public enum FilterScope
{
    Action= 30,
    Controller= 20,
    First= 0,
    Global= 10,
    Last= 100}
로그인 후 복사

ActionResult

Action执行完毕之后会返回ActionResult类型对象作为对此次请求进行处理的结果,对于不是ActionResult类型的返回值,ASP.NET MVC会将其转换为ActionResult类型。

请求生命周期

ASP.NET 应用程序的生命周期以浏览器向 Web 服务器发送请求为起点,请求到达服务器后进入处理管道,至浏览器接收服务器响应时为止。

最后附上一张老外绘制的ASP.NET请求管道图,图片来自《ASP.NET MVC Interview Questions and Answers Book》这本书。


 

课程推荐

php中文网在线Java视频教程

위 내용은 ASP.NET MVC5 요청 처리 파이프라인 및 수명 주기에 대한 자세한 자습서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

vue3은 여러 수명주기 기능을 변경했습니다. vue3은 여러 수명주기 기능을 변경했습니다. Jan 13, 2023 pm 05:57 PM

vue3은 4개의 수명주기 기능을 변경했습니다. Vue3 결합 API는 beforeCreated 및 Created Hook 함수를 취소하고 대신 Step Hook을 사용하므로 이 기능은 사용할 수 없습니다. Vue3의 컴포넌트 파괴를 위한 후크 함수가 destroy 및 beforeDestroy에서 beforeUnmount 및 unmounted로 변경되었습니다.

서블릿의 생명주기는 여러 단계로 나누어진다 서블릿의 생명주기는 여러 단계로 나누어진다 Feb 23, 2023 pm 01:46 PM

서블릿 생명주기는 서블릿의 생성부터 소멸까지의 전체 과정을 말하며, 3가지 단계로 나눌 수 있습니다. 1. 초기화 단계, init() 메소드를 호출하여 서블릿을 초기화합니다. 2. 실행 단계(요청 처리) 컨테이너는 HTTP 요청을 나타내는 ServletRequest 객체와 HTTP 응답을 나타내는 ServletResponse 객체를 생성하도록 요청한 다음 이를 Servlet의 service() 메소드에 매개변수로 전달합니다. 3. 파괴 단계.

파이프를 사용하여 Golang에서 파일을 읽고 쓰는 방법은 무엇입니까? 파이프를 사용하여 Golang에서 파일을 읽고 쓰는 방법은 무엇입니까? Jun 04, 2024 am 10:22 AM

파이프를 통한 파일 읽기 및 쓰기: 파일에서 데이터를 읽고 파이프를 통해 전달하는 파이프를 생성합니다. 파이프에서 데이터를 수신하여 처리합니다. 처리된 데이터를 파일에 씁니다. 고루틴을 사용하여 이러한 작업을 동시에 수행하여 성능을 향상시킵니다.

C++ 함수 포인터의 소멸 및 수명주기 관리를 처리하는 방법은 무엇입니까? C++ 함수 포인터의 소멸 및 수명주기 관리를 처리하는 방법은 무엇입니까? Apr 17, 2024 pm 05:48 PM

C++에서 함수 포인터에는 적절한 소멸과 수명 주기 관리가 필요합니다. 이는 함수 포인터를 수동으로 소멸시키고 메모리를 해제함으로써 달성할 수 있습니다. std::unique_ptr 또는 std::shared_ptr과 같은 스마트 포인터를 사용하여 함수 포인터의 수명 주기를 자동으로 관리합니다. 함수 포인터를 객체에 바인딩하면 객체 수명 주기가 함수 포인터의 소멸을 관리합니다. GUI 프로그래밍에서 스마트 포인터를 사용하거나 객체에 바인딩하면 콜백 함수가 적절한 시간에 소멸되어 메모리 누수 및 불일치를 방지할 수 있습니다.

Vue3의 라이프사이클 기능: Vue3의 라이프사이클을 빠르게 마스터하세요 Vue3의 라이프사이클 기능: Vue3의 라이프사이클을 빠르게 마스터하세요 Jun 18, 2023 am 08:20 AM

Vue3은 현재 프런트엔드 세계에서 가장 인기 있는 프레임워크 중 하나이며, Vue3의 라이프사이클 기능은 Vue3의 매우 중요한 부분입니다. Vue3의 라이프사이클 기능을 사용하면 특정 시간에 특정 이벤트를 트리거하여 구성 요소의 제어 가능성을 높일 수 있습니다. 이 글에서는 독자가 Vue3의 라이프사이클 기능을 빠르게 익힐 수 있도록 Vue3의 라이프사이클 기능의 기본 개념, 각 라이프사이클 기능의 역할과 사용법, 구현 사례를 자세히 살펴보고 설명합니다. 1. Vue3의 생명주기 기능

uniapp에서 구성요소의 라이프사이클 후크 기능을 수동으로 트리거하는 방법 uniapp에서 구성요소의 라이프사이클 후크 기능을 수동으로 트리거하는 방법 Oct 21, 2023 am 11:04 AM

Uniapp은 iOS, Android 및 웹 애플리케이션을 동시에 구축할 수 있는 크로스 플랫폼 애플리케이션 개발 프레임워크입니다. 애플리케이션 개발 과정에서 컴포넌트 라이프사이클 후크 기능은 특정 시간 노드에서 해당 작업을 수행하는 데 사용되는 매우 중요한 부분입니다. 일반적으로 페이지 로딩 완료, 뷰 진입, 뷰에서 컴포넌트 제거 등 특정 이벤트가 발생하면 컴포넌트의 라이프사이클 기능이 자동으로 실행됩니다. 그러나 때로는 특정 목표를 달성하기 위해 구성 요소의 수명 주기 후크 기능을 수동으로 트리거해야 하는 경우도 있습니다.

Golang 코루틴의 수명주기를 제어하는 ​​방법은 무엇입니까? Golang 코루틴의 수명주기를 제어하는 ​​방법은 무엇입니까? May 31, 2024 pm 06:05 PM

Go 코루틴의 수명 주기는 다음과 같은 방법으로 제어할 수 있습니다. 코루틴 만들기: go 키워드를 사용하여 새 작업을 시작합니다. 코루틴 종료: 모든 코루틴이 완료될 때까지 기다리고 sync.WaitGroup을 사용합니다. 채널 폐쇄 신호를 사용하십시오. 컨텍스트 context.Context를 사용하십시오.

Linux 파이프라인 명령 및 기본 사용법 소개 Linux 파이프라인 명령 및 기본 사용법 소개 Feb 22, 2024 pm 05:57 PM

Linux의 파이프 명령은 한 명령의 출력을 다른 명령의 입력으로 사용하여 서로 다른 명령 간의 데이터 전송 및 처리를 실현할 수 있는 강력한 도구입니다. 이 기사에서는 Linux의 파이프 명령의 기본 사항과 몇 가지 일반적인 사용법 및 코드 예제를 소개합니다. 파이프라인 명령 소개 Linux 시스템에서 파이프라인 명령은 세로 막대 기호(|)를 사용하여 두 개 이상의 명령을 연결합니다. 예: command1|command2 이러한 방식으로 command1의 출력은 command2가 됩니다.

See all articles