>백엔드 개발 >C#.Net 튜토리얼 >.NET MyMVC 프레임워크에서 Action을 실행하는 과정에 대한 자세한 설명

.NET MyMVC 프레임워크에서 Action을 실행하는 과정에 대한 자세한 설명

Y2J
Y2J원래의
2017-05-17 11:29:072557검색

AjaxHandlerFactory의 GetHandler 메서드에서 마침내 파이프라인의 15번째 단계에서 호출되는 HttpHandler인 ActionHandler가 생성됩니다(블로그 [Write your own service Framework with Asp.net]의 시퀀스 인용 ] ).

참고: AjaxHandlerFactory의 GetHandler 메서드는 10단계에서 호출되며 12단계는 Session을 준비하는 중입니다(비진행 모드). 따라서 12단계 전에 Session 사용을 결정해야 합니다.

모든 Action 코드는 ActionHandler에서 실행됩니다.

internal class ActionHandler : IHttpHandler{    internal InvokeInfo InvokeInfo;    public void ProcessRequest(HttpContext context)
    {        // 调用核心的工具类,执行Action        ActionExecutor.ExecuteAction(context, this.InvokeInfo);
    }

ExecuteAction의 구현 과정은 다음과 같습니다.

internal static void ExecuteAction(HttpContext context, InvokeInfo vkInfo)
{    if( context == null )        throw new ArgumentNullException("context");    if( vkInfo == null )        throw new ArgumentNullException("vkInfo");    // 调用方法    object result = ExecuteActionInternal(context, vkInfo);    // 设置OutputCache    OutputCacheAttribute outputCache = vkInfo.GetOutputCacheSetting();    if( outputCache != null )
        outputCache.SetResponseCache(context);    // 处理方法的返回结果    IActionResult executeResult = result as IActionResult;    if( executeResult != null ) {
        executeResult.Ouput(context);
    }    else {        if( result != null ) {            // 普通类型结果            context.Response.ContentType = "text/plain";
            context.Response.Write(result.ToString());
        }
    }
}internal static object ExecuteActionInternal(HttpContext context, InvokeInfo info)
{    // 准备要传给调用方法的参数    object[] parameters = GetActionCallParameters(context, info.Action);    // 调用方法    if( info.Action.HasReturn )        return info.Action.MethodInfo.Invoke(info.Instance, parameters);    else {
        info.Action.MethodInfo.Invoke(info.Instance, parameters);        return null;
    }
}

전에 SetResponseCache()를 호출하는 타이밍을 언급하지 않았나요? ? , 이번 기회는 액션을 실행한 후입니다.
OutputCache를 설정한 후에는 반환 값을 처리할 차례입니다.

이전 코드에는 또 다른 중요한 호출이 있습니다:

// 准备要传给调用方法的参数object[] parameters = GetActionCallParameters(context, info.Action);

[관련 추천]

1. 특별 추천 : "php Programmer Toolbox" V0.1 버전 다운로드

2. ASP 무료 동영상 튜토리얼

3. -level .NET MVC 예시4.

MyMVC 상자에서 Action을 찾는 과정에 대한 자세한 설명 5 .

.NET MyMVC 프레임워크에서 반환 값을 처리하는 방법에 대한 튜토리얼6.

값을 할당하는 방법에 대한 튜토리얼 ​​.NET MyMVC 프레임워크의 메서드

위 내용은 .NET MyMVC 프레임워크에서 Action을 실행하는 과정에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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