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

Posted 名字什么都是浮云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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了一下吧。

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

喜欢的朋友赶紧试试吧。

以上是关于ASP.NET Web API 记录请求响应数据到日志的一个方法的主要内容,如果未能解决你的问题,请参考以下文章

400 仅在启用 cors 时响应 asp.net web api POST 请求

ASP.NET Core Web API + Angular 对预检请求的响应未通过访问控制检查:预检请求不允许重定向

ASP.NET Core Web API 在 API GET 请求中检索空白记录

Web API系列教材1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(上)

ASP.NET Web API:返回 401/未授权响应的正确方法

从跨域 http.get 请求的 ASP.NET Web API 2 响应中获取 Angular 中的特定响应标头(例如 Content-Disposition)