2

作業中の製品に MiniProfiler を統合しました。

それは素晴らしく、簡単ですが、最も一般的な使用法を超えたものについて私が見つけたドキュメントはそれほど多くありません.

たとえば、次のコード例です。(ネストのレベルを下げるためにおそらくリファクタリングできることはわかっていますが、この質問ではそれが不可能であると想定しています)

全体的なアクションの下に、3 レベルのネスティングがあります。私が知る限り、MiniProfiler は最初の 2 レベルの深さしか表示しません。これは本当に当てはまりますか、つまり機能ですか? それとも、正しく使用していませんか?

private MiniProfiler Profiler { get; set; }

public ThingController()
{
    Profiler = MiniProfiler.Current;
}

public ActionResult GetPageSection(User user)
{
    List<RecordViewModel> viewModel;
    using (Profiler.Step("Get Section"))
    {
        using (Profiler.Step("Get Records from user"))
            {
                viewModel = user.Records.Where(r => r.Active).Select(
                    r =>
                        {
                            Item item
                            using (Profiler.Step("Get Item from service"))
                            {
                                item = GetItem(r);
                            }

                            using (Profiler.Step("Build record view model"))
                            {
                                return new RecordViewModel(r, item);
                            }
                        }).ToList();
            }
    }
    return PartialView(viewModel);
}

もう 1 つの問題は、ModelBinder 内から MiniProfiler を使用しようとする場合です。

public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
    using (Profiler.Step("Bind user"))
    {
        // Do stuff
    }
}

MiniProfiler が null です。

これらのシナリオのいずれかで MiniProfiler を機能させる方法はありますか?

注: MiniProfiler.MVC3 は使用していません。私はMiniProfilerを使用しています。これが違いを生むかどうかはわかりません。

4

0 に答える 0