zoukankan      html  css  js  c++  java
  • WebAPI 消息处理器

    由上图可以看出消息处理器的使用场合和使用方法。

    使用场合:

    • HttpServer 得到请求时.
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.MessageHandlers.Add(new MessageHandler1());
            config.MessageHandlers.Add(new MessageHandler2());
    
            // Other code not shown...
        }
    }
    • HttpRoutingDispatcher 根据路由分发地址时.
    • HttpControllerDispatcher 向控制器发送请求时.
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "Route1",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
            config.Routes.MapHttpRoute(
                name: "Route2",
                routeTemplate: "api2/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional },
                constraints: null,
                handler: new MessageHandler2()  // per-route message handler
            );
    
            config.MessageHandlers.Add(new MessageHandler1());  // global message handler
        }
    }

     使用方法:委托的一种特例,可以像一环套一环

    实现DelegatingHandler代码:

    public class MessageHandler1 : DelegatingHandler
    {
        protected async override Task<HttpResponseMessage> SendAsync(
            HttpRequestMessage request, CancellationToken cancellationToken)
        {
            Debug.WriteLine("Process request");
            // Call the inner handler.
            var response = await base.SendAsync(request, cancellationToken);
            Debug.WriteLine("Process response");
            return response;
        }
    }

    参考地址:http://www.asp.net/web-api/overview/advanced/http-message-handlers

  • 相关阅读:
    About HDFS blocks
    Hadoop源代码分析(一)
    Hadoop源代码分析(三)
    MapReduce基础
    Pig安装与配置教程
    MapReduce数据流(三)
    MapReduce数据流(二)
    c++中的临时对象
    如何修改CMD命令行窗口下的默认路径
    VC2005: warning LNK4076: 无效的增量状态文件
  • 原文地址:https://www.cnblogs.com/lzhp/p/5198727.html
Copyright © 2011-2022 走看看