MVC WebApi自定义拦截器
来源:互联网 发布:表情包软件下载 编辑:程序博客网 时间:2024/06/08 16:58
/// <summary>
/// 需要捕获请求响应日志的接口加上
/// 可直接用在整个Controller
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
public class ApiActionLogAttribute : ActionFilterAttribute
{
private static Stopwatch stopwatch = new Stopwatch();
private string requestDataStr = "";
public override void OnActionExecuting(HttpActionContext actionContext)
{
stopwatch.Restart();
base.OnActionExecuting(actionContext);
//获取请求数据
var stream = actionContext.Request.Content.ReadAsStreamAsync().Result;
requestDataStr = "";
if (stream != null && stream.Length > 0)
{
stream.Position = 0; //当你读取完之后必须把stream的读取位置设为开始
using (var reader = new StreamReader(stream, System.Text.Encoding.UTF8))
{
requestDataStr = reader.ReadToEnd();
}
}
Logger.Value.LogTrace($"RequestTime=>{ DateTime.Now}; RequestUrl=>{actionContext.Request.RequestUri.AbsoluteUri}; Body=>{requestDataStr}");
}
public override void OnActionExecuted(HttpActionExecutedContext actionContext)
{
base.OnActionExecuted(actionContext);
string responseDataStr = actionContext.Response.Content.ReadAsStringAsync().Result;
stopwatch.Stop(); // 停止监视
Logger.Value.LogTrace($"ResponseTime=>{ DateTime.Now}; ResponseUrl=>{actionContext.Request.RequestUri.AbsoluteUri}; RequestBody=>{requestDataStr};ResponseBody=>{responseDataStr};耗时=>{stopwatch.ElapsedMilliseconds}");
}
}
/// 需要捕获请求响应日志的接口加上
/// 可直接用在整个Controller
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
public class ApiActionLogAttribute : ActionFilterAttribute
{
//延迟加载
//写入日志 的实例
// private static Lazy<ILogger> Logger = new Lazy<ILogger>(() => ComponentAccessor.Instance.LoggerFac.CreateLogger<ApiActionLogAttribute>(), true);private static Stopwatch stopwatch = new Stopwatch();
private string requestDataStr = "";
public override void OnActionExecuting(HttpActionContext actionContext)
{
stopwatch.Restart();
base.OnActionExecuting(actionContext);
//获取请求数据
var stream = actionContext.Request.Content.ReadAsStreamAsync().Result;
requestDataStr = "";
if (stream != null && stream.Length > 0)
{
stream.Position = 0; //当你读取完之后必须把stream的读取位置设为开始
using (var reader = new StreamReader(stream, System.Text.Encoding.UTF8))
{
requestDataStr = reader.ReadToEnd();
}
}
Logger.Value.LogTrace($"RequestTime=>{ DateTime.Now}; RequestUrl=>{actionContext.Request.RequestUri.AbsoluteUri}; Body=>{requestDataStr}");
}
public override void OnActionExecuted(HttpActionExecutedContext actionContext)
{
base.OnActionExecuted(actionContext);
string responseDataStr = actionContext.Response.Content.ReadAsStringAsync().Result;
stopwatch.Stop(); // 停止监视
Logger.Value.LogTrace($"ResponseTime=>{ DateTime.Now}; ResponseUrl=>{actionContext.Request.RequestUri.AbsoluteUri}; RequestBody=>{requestDataStr};ResponseBody=>{responseDataStr};耗时=>{stopwatch.ElapsedMilliseconds}");
}
}
阅读全文
0 0
- MVC WebApi自定义拦截器
- spring mvc 自定义拦截器
- Spring MVC自定义拦截器
- Spring MVC 自定义拦截器
- MVC WebApi自定义异常过滤器
- MVC 自定义拦截器 FilterAttribute、IActionFilter、IExceptionFilter
- Spring MVC-自定义拦截器解决方案
- Spring mvc 自定义拦截器【详解】
- spring mvc 自定义方法拦截器
- spring MVC自定义拦截器解析
- Spring-mvc自定义拦截器实现
- Spring MVC配置自定义拦截器
- MVC WebApi 路由设置(自定义) 分区Area
- MVC WEBAPI
- 自定义 spring mvc 拦截器(近期项目需求实现)
- Spring MVC的自定义拦截器(登录)
- Spring mvc的自定义注解权限拦截器(一)
- Spring MVC--9.自定义拦截器、异常处理
- day01_基础加强
- 面试题之MySQL多表查询方法
- 模拟退火 BZOJ-2428
- IDEA十大快捷键(for、System.out、main等)
- 两篇word文档行间距设置的一样但是显示的不一样的解决方法
- MVC WebApi自定义拦截器
- Android自定义view保存状态学习总结
- 获取包名类名
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- 错误集
- Echarts请求json数据实例
- LeetCode35. Search Insert Position
- IE浏览器下点击a标签有虚线框的问题
- 自定义认证后台和QQ第三方登录