.NET MyMVC框架执行Action的过程详解


本文摘自PHP中文网,作者Y2J,侵删。

在AjaxHandlerFactory的GetHandler方法中,最后将创建一个ActionHandler,这是一个HttpHandler, 它将在管线的第15个步骤中被调用(引用博客【用Asp.net写自己的服务框架】中的顺序)。

注意:AjaxHandlerFactory的GetHandler方法是在第10步中调用的,第12步就是在准备Session(非进程内模式), 因此,必须在第12步前决定Session的使用方式。

所有的Action代码都是在ActionHandler中执行的:

1

2

3

internal class ActionHandler : IHttpHandler{    internal InvokeInfo InvokeInfo;    public void ProcessRequest(HttpContext context)

    {        // 调用核心的工具类,执行Action        ActionExecutor.ExecuteAction(context, this.InvokeInfo);

    }

ExecuteAction的实现过程如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

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()的时机嘛,这个时机就是在这里:执行完Action后。
设置过OutputCache后,就是处理返回值了。

前面那段代码中,还有一句重要的调用:

1

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

【相关推荐】

1. 特别推荐:“php程序员工具箱”V0.1版本下载

2. ASP免费视频教程

3. 入门级的.NET MVC 实例

4. MyMVC框查找Action的过程详解

5. .NET MyMVC框架处理返回值的教程

6. .NET MyMVC框架如何给方法赋值的教程

以上就是.NET MyMVC框架执行Action的过程详解的详细内容!

相关阅读 >>

mes溯源方案追溯系统开发

c#开发微信门户及应用(一)之微信接口的如何使用(图)

.net?framework?4.5?五个很棒的特性分享

.net core 和 .net .framework 相比哪个速度快?

详细分析 .net core 构成体系(图)

c#如何使用正则表达式来验证中文字符的案例

详解可选参数和命名参数实例

代码分析:在.net core中使用ref和span<t>提高程序性能

c#如何连接到sql server2008数据库的示例分享

core实现全面扫盲贴的asp方法详解

更多相关阅读请进入《.net》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...