【发布时间】:2015-07-08 22:41:58
【问题描述】:
有没有简单的方法可以在 c# 中找到通话时长。
我正在使用 Owin 中间件拦截对 API 的调用并记录有关它们的信息,而我想要记录的部分内容是调用的持续时间。
public override async Task Invoke(IOwinContext context)
{
var request = context.Request;
var response = context.Response;
var userName = request.User != null && request.User.Identity.IsAuthenticated ? request.User.Identity.Name : "No username";
var entity = new TrackingEntity()
{
UserName = userName
};
// invoke the next middleware in the pipeline
await Next.Invoke(context);
WriteRequestHeaders(request, entity);
WriteResponseHeaders(response, entity);
await storage.InsertEntity(entity);
}
如果我的跟踪实体上有一个 Duration 字段来存储通话的时间长度,那么记录它的最佳方式是什么?
public TimeSpan Duration { get; set; }
使用在调用 next 之前开始并在之后结束的计时器是最准确的方法吗?
任何意见都将不胜感激,我想我只是想多了。
提前致谢。
【问题讨论】:
-
编写一个过滤器并使用秒表计算花费的时间...使用反射检查响应中是否存在属性并进行相应设置
-
@entre 抱歉,我对 Owin 比较陌生。创建一个 owin 过滤器?还是 Asp.net 操作过滤器?
标签: c# owin middleware