1. 通过Nuget安装System.Web.Http.Tracing.

2. 通过HttpConfiguration,注册SystemDiagnosticsTraceWriter

        public static void Register(HttpConfiguration config)
{
// Web API configuration and services // Web API routes
config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
); config.Filters.Add(new ValidateModelStateFilter());
FluentValidationModelValidatorProvider.Configure(config); //regular registration
config.Services.Replace(typeof(ITraceWriter), new SystemDiagnosticsTraceWriter());
//through an extension method
config.EnableSystemDiagnosticsTracing();
}

3. 运行,即可看到整个运行过程的信息日志信息,通过日志信息可以窥探WebApi的运行内核信息。

发送请求:

输出信息为:

iisexpress.exe Information:  : Request, Method=POST, Url=http://localhost:52187/api/default/, Message='http://localhost:52187/api/default/'
“iisexpress.exe”(CLR v4.0.30319: /LM/W3SVC//ROOT--): 已加载“C:\Users\lenmo\AppData\Local\Temp\Temporary ASP.NET Files\vs\89abac48\79d00737\assembly\dl3\a74c6d75\00e4889b_139bd301\System.Web.Http.resources.dll”。模块已生成,不包含符号。
iisexpress.exe Information: : Message='Default', Operation=DefaultHttpControllerSelector.SelectController
iisexpress.exe Information: : Message='WebApplication1.Controllers.DefaultController', Operation=DefaultHttpControllerActivator.Create
iisexpress.exe Information: : Message='WebApplication1.Controllers.DefaultController', Operation=HttpControllerDescriptor.CreateController
iisexpress.exe Information: : Message='所选操作“Post(UserModel user)”', Operation=ApiControllerActionSelector.SelectAction
“iisexpress.exe”(CLR v4.0.30319: /LM/W3SVC//ROOT--): 已加载“C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Numerics\v4.0_4.0.0.0__b77a5c561934e089\System.Numerics.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
iisexpress.exe Information: : Message='读取的值=“WebApplication1.Controllers.UserModel”', Operation=JsonMediaTypeFormatter.ReadFromStreamAsync
iisexpress.exe Information: : Message='参数“user”已绑定到值“WebApplication1.Controllers.UserModel”', Operation=FormatterParameterBinding.ExecuteBindingAsync
iisexpress.exe Information: : Message='模型状态无效。user.Password: Please specify a first name', Operation=HttpActionBinding.ExecuteBindingAsync
iisexpress.exe Information: : Message='将使用同一“JsonMediaTypeFormatter”格式化程序', Operation=JsonMediaTypeFormatter.GetPerRequestFormatterInstance
iisexpress.exe Information: : Message='所选格式化程序=“JsonMediaTypeFormatter”,content-type=“application/json; charset=utf-8”', Operation=DefaultContentNegotiator.Negotiate
iisexpress.exe Information: : Operation=ValidateModelStateFilter.OnActionExecutingAsync, Status= (BadRequest)
iisexpress.exe Information: : Operation=DefaultController.ExecuteAsync, Status= (BadRequest)
iisexpress.exe Information: : Response, Status= (BadRequest), Method=POST, Url=http://localhost:52187/api/default/, Message='Content-type=“application/json; charset=utf-8”,content-length=未知'
iisexpress.exe Information: : Operation=JsonMediaTypeFormatter.WriteToStreamAsync
iisexpress.exe Information: : Operation=DefaultController.Dispose

注意: 通过示例注册代码,默认将打印所有的运行日志,如果希望对日志进行筛选,可以通过以下方式:

            //regular registration
config.Services.Replace(typeof(ITraceWriter), new SystemDiagnosticsTraceWriter() { MinimumLevel= TraceLevel.Error});
//through an extension method
config.EnableSystemDiagnosticsTracing();

默认的注册方式为: Info,即打印所有信息出来。TraceLevel的定义为:

  //
// 摘要:
// 指定跟踪级别的枚举。
public enum TraceLevel
{
//
// 摘要:
// 已禁用跟踪。
Off = ,
//
// 摘要:
// 调试跟踪的跟踪级别。
Debug = ,
//
// 摘要:
// 信息跟踪的跟踪级别。
Info = ,
//
// 摘要:
// 警告跟踪的跟踪级别。
Warn = ,
//
// 摘要:
// 错误跟踪的跟踪级别。
Error = ,
//
// 摘要:
// 严重跟踪的跟踪级别。
Fatal =
}

也可以使用第三方的日志组件用于输出运行时信息:如

WebApiContrib.Tracing.Log4Net
WebApiContrib.Tracing.Nlog

安装方法,Nuget:

install-package WebApiContrib.Tracing.Nlog
install-package WebApiContrib.Tracing.Log4Net

注册代码类似:

httpConfiguration.Services.Replace(typeof(ITraceWriter), new NlogTraceWriter());

通过日志查看Web Api详细运行过程的更多相关文章

  1. ASP.NET Web API 控制器创建过程(一)

    ASP.NET Web API 控制器创建过程(一) 前言 在前面对管道.路由有了基础的了解过后,本篇将带大家一起学习一下在ASP.NET Web API中控制器的创建过程,这过程分为几个部分下面的内 ...

  2. ASP.NET Web API 控制器执行过程(一)

    ASP.NET Web API 控制器执行过程(一) 前言 前面两篇讲解了控制器的创建过程,只是从框架源码的角度去简单的了解,在控制器创建过后所执行的过程也是尤为重要的,本篇就来简单的说明一下控制器在 ...

  3. ASP.NET Web API 控制器创建过程(二)

    ASP.NET Web API 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病 ...

  4. IDEA整合日志框架Log4j2+Slf4j详细配置过程

    日志框架这么多,他们之间到底是什么关系呢?笼统的讲就是slf4j是一系列的日志接口,而log4j2.logback是具体实现了接口功能的日志框架.现在的主流日志接口都使用slf4j,而日志的实现就见仁 ...

  5. ASP.NET Web API 控制器执行过程

    http://www.cnblogs.com/jin-yuan/p/3952605.html

  6. 使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例)

    作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何基于dotnet core(微软.NET的最新版本,支持跨平台,跨设备的应用开发,详情请参考 https ...

  7. devOps开发(Web API 实例)dotnet core 和 Azure PaaS服务

    使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例) 作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何 ...

  8. 关于操作 ASP.NET Web API的实例

    WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美.为了实现分布式Web应用,我们不得不将两者凑合在一起 —— WCF服务以HTTP绑定宿主于IIS. 于是有了让人晕头转向的配置.让人郁 ...

  9. HttpClient + ASP.NET Web API, WCF之外的另一个选择

    WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美.为了实现分布式Web应用,我们不得不将两者凑合在一起 —— WCF服务以HTTP绑定宿主于IIS. 于是有了让人晕头转向的配置.让人郁 ...

随机推荐

  1. BZOJ 1875 【SDOI2009】 HH去散步

    题目链接:HH去散步 如果不考虑不能走上一次走的边的话,这道题就是一个矩乘的裸题. 现在有了这个条件其实也很好做.我们平常的矩阵都是按点建的,\(A_{i,j}\)表示从第\(i\)个点走到第\(j\ ...

  2. js 判断浏览器类型及版本

    1.思路: 能力检测 + 字符串检索 2.例子 IE    Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)      ActiveXObject函 ...

  3. VERSIONINFO Resource

    转自(http://www.xuebuyuan.com/1202062.html) VERSIONINFO Resource Defines a version-information resourc ...

  4. 常用flash参数设置

    <object type="application/x-shockwave-flash" data="vcastr3.swf" width="6 ...

  5. 如何导入数据到Mysql

    有两种方法: 1.如果是.sql后缀的数据库文件,使用phpmyadmin中的导入功能导入即可,导入前需要新建数据库名. 2.如果导入的是文件夹(内含.frm,.myd,.myi,.opt类型文件), ...

  6. rxjava 调用retrofit执行网络请求的过程

    retrofit流程图 -1.RxJava调用Retrofit,从requestGtPushSaeUserInfo()中获得被观察者observable,然后new一个观察者向它订阅   0.从业务中 ...

  7. WIN8.1 PRO RTM VOL.2013.09.18

    文件名:cn_windows_8_1_pro_vl_x64_dvd_2791218.isoSHA1:61C002551763E22B64EB1BACEFFE83620114C3D6 文件名:cn_wi ...

  8. Scrum立会报告+燃尽图(3)选题

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2193 一.小组介绍 组长:刘莹莹 组员:朱珅莹 孙韦男 祝玮琦 王玉潘 ...

  9. DIY远程控制开关(tiny6410+LED+yeelink+curl)

    上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊.不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不 ...

  10. 【Keras学习】Sequential模型

    序贯(Sequential)模型 序贯模型是多个网络层的线性堆叠,也就是“一条路走到黑”. 可以通过向Sequential模型传递一个layer的list来构造该模型: from keras.mode ...