Ø  前言

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. rt-thread之 for (fn_ptr = &__rt_init_rti_board_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++) 理解

    @2019-01-30 [小记] 利用宏 INIT_EXPORT() --- __attribute__() 将函数重新放置在自定义段,执行时去该段获取函数地址 RT-Thread 的 INIT_BO ...

  2. 【转】设置 vim 显示行号永久有效

    在linux环境下,vim是常用的代码查看和编辑工具.在程序编译出错时,一般会提示出错的行号,但是用vim打开的代码确不显示行号,错误语句的定位非常不便.那么怎样才能让vim显示代码的行号呢? 1 临 ...

  3. html概述和基本结构

    html概述 HTML是 HyperText Mark-up Language 的首字母简写,意思是超文本标记语言,超文本指的是超链接,标记指的是标签,是一种用来制作网页的语言,这种语言由一个个的标签 ...

  4. 「SCOI2014」方伯伯运椰子 解题报告

    「SCOI2014」方伯伯运椰子 可以看出是分数规划 然后我们可以看出其实只需要改变1的流量就可以了,因为每次改变要保证流量守恒,必须流成一个环,在正负性确定的情况下,变几次是无所谓的. 然后按照套路 ...

  5. chattr命令详解

    [root@localhost ~]# usermod -L yan[root@localhost ~]# passwd -S yanyan LK 2016-07-11 0 99999 7 -1 (密 ...

  6. POJ 1845 Sumdiv(逆元)

    题目链接:Sumdiv 题意:给定两个自然数A,B,定义S为A^B所有的自然因子的和,求出S mod 9901的值. 题解:了解下以下知识点   1.整数的唯一分解定理 任意正整数都有且只有唯一的方式 ...

  7. linux(fedora) 第三课

    树形打印所有进程名:pstree pstree | grep pstree -A2 -B2(查看pstree前后两行) NI的值[-20,20) nice(改变NI的值):改变程序优先级 nice - ...

  8. hdu 4300 Clairewd’s message(扩展kmp)

    Problem Description Clairewd is a member of FBI. After several years concealing in BUPT, she interce ...

  9. 前端JS Excel解析导入

    本文转载自:https://www.cnblogs.com/yinqingvip/p/6743213.html 需要用到js-xlsx:下载地址:js-xlsx <!DOCTYPE html&g ...

  10. JavaScript frame跨域获取元素、修改元素属性、调用其他frame页面方法

    今天做了一个frameset的集合页面,其中有多个iframe页面,其中点击frame=leftMenu里的按钮元素后,需要修改frame=Header页面里的一个div元素属性. 1.主页面架构 & ...