Ø  前言

ASP.NET 的应用程序都会有自己的消息处理管道和生命周期,比如:ASP.NET Web 应用程序(Web Form)、ASP.NET MVC,还有本文将讨论的 ASP.NET Web API 2。消息处理管道是一个复杂的过程,导致于很多人对这块半知半解,包括本人也是。本文将从以下几点展开研究,不对之处,欢迎指出。

1.   为什么要了解消息处理管道或生命周期

我们知道,Web 应用程序都是发布到 IIS(服务器)上,提供给其他程序访问。而每个请求“进来”,我们的 IIS 帮我们做了哪些事情呢?这就涉及到消息处理管道了,每个一个请求进来,都会执行相同的生命周期。而有些消息管道是我们可以写程序干预的,比如:DelegatingHandler(委托处理程序)、和一系列的过滤器等等。这样我们就可以编写自己的处理程序,来完成我们制定的个性化需求了。

2.   首先, 我们来看下 ASP.NET Web API 2 的生命周期(来至于:https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf

1)   首先程序初始化时,自动创建了一个 HttpServer 对象,该对象用于配置整个Web 环境所需的配置,例如:委托处理程序、路由配置、过滤器、媒体类型格式化程序等等,该类继承于 System.Net.Http.DelegatingHandler。也属于委托处理程序中的一种,是比较特殊的处理程序。

1.   委托处理程序:它是每个请求必须经历的消息通道,可以指定多个消息处理程序,从而形成消息处理程序委托链,当请求到来时最先执行消息处理程序。委托处理程序继承于 System.Net.Http.HttpMessageHandler 类,该类是消息处理程序的基类。

2.   路由配置:用于配置 HTTP 请求的路由格式,由 System.Web.Http.Dispatcher.HttpRoutingDispatcher 处理程序来找到请求的 Controller 和 Action,同样继承于 System.Net.Http.HttpMessageHandler 类。

3.   过滤器:也是我们会经常接触的,大致分为四种类型:身份验证过滤器、授权过滤器、动作过滤器、以及异常过滤器。

4.   媒体类型格式化程序:用于配置请求和响应媒体类型格式的相关设置,例如:Json、XML 格式的设置等。

待完善…

ASP.NET Web API 2 消息处理管道的更多相关文章

  1. ASP.NET Web API的消息处理管道: Self Host下的消息处理管道[上篇]

    ASP.NET Web API的消息处理管道: Self Host下的消息处理管道[上篇] ASP.NET Web API服务端框架核心是一个独立于具体寄宿环境的消息处理管道,它不关心请求消息来源于何 ...

  2. ASP.NET Web API的消息处理管道: HttpRoutingDispatcher

    ASP.NET Web API的消息处理管道: HttpRoutingDispatcher 认情况下,作为消息处理管道“龙头”的HttpServer的Dispatcher属性返回一个HttpRouti ...

  3. ASP.NET Web API的消息处理管道:"龙头"HttpServer

    ASP.NET Web API的消息处理管道:"龙头"HttpServer 一般来说,对于构成ASP.NET Web API消息处理管道的所有HttpMessageHandler来 ...

  4. ASP.NET Web API标准的“管道式”设计

    ASP.NET Web API的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合.这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessageHan ...

  5. ASP.NET Web API的安全管道

    本篇体验ASP.NET Web API的安全管道.这里的安全管道是指在请求和响应过程中所经历的各个组件或进程,比如有IIS,HttpModule,OWIN,WebAPI,等等.在这个管道中大致分两个阶 ...

  6. Web API之消息处理管道

    Web API之消息处理管道 前言 MVC有一套请求处理的机制,当然Web API也有自己的一套消息处理管道,该消息处理管道贯穿始终都是通过HttpMessageHandler来完成.我们知道请求信息 ...

  7. Web APi之消息处理管道(五)

    前言 MVC有一套请求处理的机制,当然Web API也有自己的一套消息处理管道,该消息处理管道贯穿始终都是通过HttpMessageHandler来完成.我们知道请求信息存在 RequestMessa ...

  8. ASP.NET Web API标准的“管道式”设计

    详见:http://www.cnblogs.com/artech/p/asp-net-web-api-pipeline.html http://www.codeproject.com/Articles ...

  9. ASP.NET Web API消息处理管道:Self Host下的消息处理管道[下篇]

    ASP.NET Web API消息处理管道:Self Host下的消息处理管道[下篇] 我们知道ASP.NET Web API借助于HttpSelfHostServer以Self Host模式寄宿于当 ...

随机推荐

  1. 部署KVM

    1.安装前准备1)服务器或者PC的CPU能支持VT技术2)虚拟机中安装KVM要勾选:处理器:虚拟化Intel VT-x/EPT或AMD-V/RVI(V)[root@localhost ~]# cat ...

  2. luogu1608 路径统计 (spfa)

    题意:给一个有向图(无零边),要求找出最短路的数量(重边只计算一次) 做spfa的时候,记一个cnt对于u-w->v如果dis[u]+w=dis[v],cnt[v]+=cnt[u] 如果dis[ ...

  3. Naive Operations HDU6315 (杭电多校2G)

    让ci = ai / bi, 求sum(ci)的值,因为每次 ai 都是加一的,那么我可以用一颗线段树来维护每个 i 位置的 ai 距离达到 bi 还需要的数的最小值,更新是每次都减一,如果我某一个区 ...

  4. MVC aspx

    客户端服务器---Model(模型)---View(视图)---Control(控制器) 1.ASP.NET  MVC 2.新建项目引擎选aspx.在Controllers创建控制器,默认启动Home ...

  5. A1011. World Cup Betting

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...

  6. Django(十二)—关于查询知识点总结

    https://www.cnblogs.com/haiyan123/p/7763710.html models.Book.objects.filter(**kwargs):   querySet   ...

  7. react-native中timer的注意点

    务必在卸载组件前清除定时器! 我们发现很多 React Native 应用发生致命错误(闪退)是与计时器有关.具体来说,是在某个组件被卸载(unmount)之后,计时器却仍然在运行.要解决这个问题,只 ...

  8. PHP魔术方法大全

    十六个魔术方法详解如下 说明:PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的 ...

  9. 第二十二节,TensorFlow中RNN实现一些其它知识补充

    一 初始化RNN 上一节中介绍了 通过cell类构建RNN的函数,其中有一个参数initial_state,即cell初始状态参数,TensorFlow中封装了对其初始化的方法. 1.初始化为0 对于 ...

  10. echart折线区域图

    在引入echart区域折线图时,没有出现对应的区域图 当发现引入下面代码到自己的代码中并没有对应的区域图 option = { xAxis: { type: 'category', boundaryG ...