首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声呼持续时间

声呼持续时间
EN

Stack Overflow用户
提问于 2015-07-08 22:41:58
回答 1查看 623关注 0票数 2

是否有简单的方法可以在c#中找到调用持续时间。

我正在使用Owin中间件来拦截对API的调用,并记录有关它们的信息,我想要记录的部分内容是调用的持续时间。

代码语言:javascript
复制
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);
}

如果我的跟踪实体有一个持续时间字段来存储调用的时间长度,那么记录它的最佳方法是什么?

代码语言:javascript
复制
public TimeSpan Duration { get; set; }

是否使用在调用next之前开始,然后结束的计时器是最准确的方法?

任何意见都会很感激,我想我只是想过头了。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-11 20:25:08

我不认为您需要创建计时器的开销,只需将开始时间记录到变量中,然后在另一个变量中结束时间来设置持续时间。

代码语言:javascript
复制
var startTime = DateTime.Now;
await Next.Invoke(context);
var endTime = DateTime.Now;
Duration = endTime - startTime;

这有点混乱,但是如果您在这个中间件中所做的所有工作都是日志记录,那么您希望它能够快速完成,这应该符合要求。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31305108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档