ASP.NET Web API 记录请求响应数据到日志的一个方法

原文:ASP.NET Web API 记录请求响应数据到日志的一个方法

原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/

ASP.NET Web API 记录请求响应数据到日志的一个方法

REST风格的服务架构已经成为越来越多人的选择,之前我用过WCF来实现REST服务,WCF是一个很强大的框架,干这点小事有点太沉重的感觉。后来微软又推出了一个ASP.NET Web API,专门用来处理一些基本的Http服务,即灵活又简单,推荐大家都看看。

今天这篇文章是使用ASP.NET Web API过程中的一个小经验,与大家分享。

后台服务通常需要记录一些运行记录,如输入输出、请求信息、处理过程、响应信息等,在以前记录请求数据和响应数据时,我经常在具体的接口方法中处理,如:

LogHelper.LogRequest 用于记录请求的数据,LogHelper.LogResponse用于记录返回的数据。

这样处理的话,每个方法中都要重复如此记录,不简洁,不方便,还处于复制代码的阶段。一直想改变,去苦于没有思路。

某一天在博客园看到《ASP.NET Web API 处理架构》,如获至宝。于是开始在Web API的生命周期中寻找可以截获到这些数据的点,最终在官网上找到一篇文章《HTTP Message Handlers》,参考其中的说明,我重新构造了记录输入输出的方法:

为了使消息处理进入我们自定义的消息处理程序,需要在Global.asax文件的Application_Start方法中,将CustomMessageHandler添加到MessageHandlers中:

DelegatingHandler使用委托模式,这样添加以后,程序就会执行CustomMessageHandler中重写的方法了。

这样也算AOP了一下吧。

关于日志记录,推荐使用log4net或NLog,成熟稳定。

喜欢的朋友赶紧试试吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx + php

Nginx php 目前有两种方式1.nginx apache nginx 负责静态内容、反向代理和保持连接,apache则负责处理动态内容。 2.nginx fastcgi php-fpm一、nginx apache 采用Nginx前端Apache后端的服务器架构,这样可以很好地结合了Nginx高并发和静态页面高效率以…

Android Fragment完全解析,关于碎片你所需知道的一切

我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述。 但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就…

图像--摄像头组成与基本参数

基本组成 Sensor: 图象传感器 FPC: 电路板 IR:红外滤波片 Holder:基座 Lens:镜头 其他 核心部件:1- SENSOR 2- LENS Sensor参数 类别 指标 参考 备注 Sensor 厂家 sony 三星 OV 格科微由原厂提供完整规格书和型号 低像素需要注意 分辨率 0.3MP (VGA)模组…

1.I2C协议

1.I2C协议2条双向串行线,一条数据线SDA,一条时钟线SCL。SDA传输数据是大端传输,每次传输8bit,即一字节。支持多主控(multimastering),任何时间点只能有一个主控。总线上每个设备都有自己的一个addr,共7个bi…

联想启天M715E安装硬盘保护系统和网络同传

现还是学生,虽然大四课上的少,实验室去的也不勤了,但指导老师有事吩咐,还是要办好的。 沈老师荣升软件实验室主任,学校给了2个机房,一个70台联想启天M715E,一个30台新的70台新主机(配…

图像--摄像头数据输出格式与传输接口

一、 数据输出格式 RAW data 格式: CMOS 在将光信号转换为电信号时的电平高低的原始记录,单纯地将没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。 每个pixel只能感光R光或者B光或者G光&am…

计算机入门与学习回忆(一)

这个回忆,不是记录什么成功,而记录一些失败的经历。 大约初中还是高中的时候,就玩过计算机。那是一个很冷的冬天的晚上,一台华南计算机所造的仿APPLE II的计算机。 这台计算机很简陋,只有一个主机,没有屏幕…

怎么建立微信生态用户增长模型?

微信最新数据及中国网民最新数据概述截止到2018年,移动网民用户增长放缓,接近人口大盘。微信作为全国移动网民的一款超级应用,在移动网民的***率超过90%。微信最近一年的新增用户主要来自中老年用户群体和乡镇用户群体***。易观最新发布的8月…

数据库设计的三大范式

三大范式是为了了更好的设计数据库 1. 所谓第一范式(1NF)是指在关系模型中,对列添加的一个规范要求,所有的列都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组&…

图像-摄像头驱动流程

驱动架构 在Kernel层用camera的驱动将其驱动起来以后,将硬件驱动接口交给Hal; 上层的camera应用程序在andriod实时系统的虚拟机中,加载留给camera公用的库文 件,调用Hal层的接口来控制camera硬件来实现功能。 驱动流程 打开came…

第四章

选择结构(二) 学习本章会用到的单词: case:实例,情形,情况 switch:转换,切换,开关 default:系统默认值,违约,预设。缺省 exit&#xf…

tensorflow的一些函数

1.tf.constant(value,dtypeNone,shapeNone,nameConst) 注意这个函数创造的是一个常数tensor,而不是一个具体的常数 value:即可以是list,也可以是value dtype:对应生成的tensor里的元素的类型 # Constant 1-D Tensor populated with value list.tensor t…

生活小常识

1、面试时说三个月试用期可以缩短的不要相信,可以谈谈别的条件 2、在饭店吃饭满几桌送下次吃饭的卷的不要信。可能你会没时间,或饭店没地方。(谈谈当时可以送的其他优惠。或者根据自己的需求定桌数,不要被他诱惑凑桌)转…

IP、TCP、UDP数据包长度问题

IP数据包长度问题总结 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。   其中以太网(Ethernet)的数据帧在链路层    IP包在网络层   TCP或UDP包在传输层    TCP或UDP中的…

RK瑞芯微WIFI模组2020最新支持列表,放心使用!

如下所示为RK瑞芯微2020最新支持的WIFIBT模组列表,请参考! 标题希望对选型有所帮助,避免踩坑,坑驱动工程师! 有事要搞,请私聊!

数据类型进阶

----------siwuxie095 1、整数类型 如果去掉注释,报错:Type mismatch: cannot convert from into byte 即 不能把 int 类型转换成 byte 类型 如果选择 Add cast to byte: 即 把 b13 的结果(默认为 int 类型)强制转换成…

区块链教程Fabric1.0源代码分析流言算法Gossip服务端二

区块链教程Fabric1.0源代码分析流言算法Gossip服务端二 Fabric 1.0源代码笔记 之 gossip(流言算法) #GossipServer(Gossip服务端) 5.2、commImpl结构体方法 //conn.serviceConnection(),启动连接服务 func (c *commImp…

一段H264数据的分析

目录(?)[-] 分析00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01分析00 00 00 01 68 CE 38 80 00 00 00 01 分析00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01 H264的数据流分为两种,一种是NAL UNIT stream(RTP),一种是 bits stream…

海华模组:WIFI、BT、SoC模组列表

各种模块广泛应用于网络摄像头、智能机器人、儿童故事机、词典笔、智能音箱、智能家电等需要实现无线联网设备的消费类电子产品。 模块化有很大的有点:集成设计、减少调试工作,避开开发盲区、加速将产品推向市场! 下面介绍下海华各类通讯模…

JAVA-初步认识-第七章-构造函数和一般函数的区别

一. 构造函数是对象一创建,就被调用了。(调用这个词很特殊,是涉及到实体时,才会有调用的过程) 还有一点想说的是,构造函数的声明应该是固定的,不然没法随着对象的创建一起执行,必须是类名括号的形式。 二. …