WebAPI 消息处理器
2016-02-18 17:01
260 查看
由上图可以看出消息处理器的使用场合和使用方法。
使用场合:
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
相关文章推荐
- 快的打车架构实践
- 【练习】String类的trim方法
- 黑马程序员_java08_多线程
- Docker快速入门
- InitializingBean
- 初学者学习C++的50条忠告
- 计算机专业方面的期刊介绍
- Shell基础整理
- Apache Rewrite的主要功能
- EJB有状态的会话Bean和无状态的会话Bean的区别
- ecshop的安装与相关问题解决
- centos安装SWFtools服务(pdf2swf)
- Struggling trying to get cookie out of response with HttpClient in .net 4.5
- Light OJ 1327 Help the Winners (状压DP)
- 教你写Http框架(一)
- RxJava 创建操作符 defer
- web学习之路—H5(四)
- C/C++函数指针(typedef简化定义)
- adbo.net 使用open打开连接报错的解决办法
- linux基本命令