1

在迷你探查器 1.9 版中,我找到了一种将异步 DB 调用的 SQL 计时纳入探查器结果的方法。基本上,我在ContinueWith异步任务中添加了一个,然后将所有 SQL 计时添加到启动异步操作的步骤中:

foreach (var sqlTiming in completedResult.SqlTimings)
{
    currentStep.AddSqlTiming(sqlTiming);
}

但是,这在 2.0.2 中不再有效——那些 SQL 计时就消失了。似乎有一种新方法可以完全满足我的要求(source,第 487 行):

/// <summary>
/// Adds <paramref name="externalProfiler"/>'s <see cref="Timing"/> hierarchy to this profiler's current Timing step,
/// allowing other threads, remote calls, etc. to be profiled and joined into this profiling session.
/// </summary>
public static void AddProfilerResults(this MiniProfiler profiler, MiniProfiler externalProfiler)
{
    ...

所以看起来这就是我现在应该做的:

MiniProfiler.Current.AddProfilerResults(profilerFromAsyncTask);

但是,虽然这不会引发错误,但它似乎根本没有给结果添加任何东西。我可以通过以下方式获得出现在步骤中的步骤:

currentStep.AddChild(profilerFromAsyncTask.Root)

但是,这仍然会丢弃 SQL 计时,并导致启动异步任务的步骤出现负数。

我需要做些什么来让 AddProfilerResults 的结果与 SQL 计时一起出现吗?

4

1 回答 1

1

异步当前不是mini-profiler 积极支持或测试的场景。在有一个支持的机制来做到这一点之前,我不愿意深入挖掘以找到一种方法来破解它,只是为了让这种破解随着下一次变化而消失。从长远来看,异步是我们应该处理的事情——到目前为止,它还不是必需的。

我怀疑您最好的选择是在项目站点上创建一个建议(或对现有建议添加评论)。或者甚至更好:找出一种机制来做到这一点(它可以在不破坏任何东西或有风险的情况下工作)并提交一个变更集。

于 2012-07-17T10:30:17.143 回答