在IIS日志中记录的持续时间包括请求处理之前和之后的时间,而在Application Insights中记录的持续时间仅包括请求处理时间。因此,我们可以通过在IIS日志中计算实际处理时间来减少持续时间的差距。下面是示例代码:
// 计算实际持续时间
var start = DateTime.ParseExact(logFields["date"] + logFields["time"], "yyyy-MM-ddHH:mm:ss", CultureInfo.InvariantCulture);
var end = start.AddTicks((long)(double.Parse(logFields["time-taken"], CultureInfo.InvariantCulture) * TimeSpan.TicksPerMillisecond));
var actualDuration = end - start;
// 记录实际持续时间
telemetry.Duration = actualDuration;
在上面的代码中,我们解析IIS日志中的日期,时间和持续时间字段,并计算请求的实际持续时间。然后,我们将实际持续时间记录在Application Insights事件中,以使其能够反映传递的请求。这样,我们就可以通过比较IIS日志和Application Insights事件中的持续时间来找出差异,并获得更准确的性能指标。