如题:
.net webapi 采用了Owin的验证机制,另外在Action层之外设置了两次验证
第一次是重写了AuthorizeAttribute,用来验证身份的类,类名为ProtalApiAuth【这个是直接作用于action的,如下图】
第二次是重写了ActionFilterAttribute, 在OnActionExecuting和OnActionExecuted的时候分别记录webapi请求和返回的内容 ,类名为:AppRequestActionFilter 【这个是注册到全局的,见图3】
前两层具体读取body的代码
//读取请求的内容流 var task = context.Request.Content.ReadAsStreamAsync(); string content = ""; using (System.IO.Stream sm = task.Result) { if (sm != null) { sm.Seek(0, SeekOrigin.Begin); int len = (int)sm.Length; byte[] inputByts = new byte[len]; sm.Read(inputByts, 0, len); sm.Close(); content = Encoding.UTF8.GetString(inputByts); } }