是否有简单的方法可以在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);
}如果我的跟踪实体有一个持续时间字段来存储调用的时间长度,那么记录它的最佳方法是什么?
public TimeSpan Duration { get; set; }是否使用在调用next之前开始,然后结束的计时器是最准确的方法?
任何意见都会很感激,我想我只是想过头了。
提前谢谢。
发布于 2015-07-11 20:25:08
我不认为您需要创建计时器的开销,只需将开始时间记录到变量中,然后在另一个变量中结束时间来设置持续时间。
var startTime = DateTime.Now;
await Next.Invoke(context);
var endTime = DateTime.Now;
Duration = endTime - startTime;这有点混乱,但是如果您在这个中间件中所做的所有工作都是日志记录,那么您希望它能够快速完成,这应该符合要求。
https://stackoverflow.com/questions/31305108
复制相似问题