C# 如何向MiniProfiler添加启动计时?

C# 如何向MiniProfiler添加启动计时?,c#,mvc-mini-profiler,C#,Mvc Mini Profiler,我想使用MiniProfiler启动应用程序。到目前为止,我一直不成功。我试图创建一个计时并将其添加到根的子级,但它没有收集我想要的所有数据。它还将从总配置文件时间中减去启动时间,因此最终的持续时间为负。目前我唯一的解决方案是自己用秒表计时,并将其添加到客户端计时中。这将从第一个请求中删除客户端计时,并添加应用程序启动持续时间。但是我没有获得定制的计时等。另外,由于我使用AddProfilerResults方法将我的API配置文件合并到我的MVC配置文件中(对于MVC UI,它们是分步包装的),

我想使用MiniProfiler启动应用程序。到目前为止,我一直不成功。我试图创建一个计时并将其添加到根的子级,但它没有收集我想要的所有数据。它还将从总配置文件时间中减去启动时间,因此最终的持续时间为负。目前我唯一的解决方案是自己用秒表计时,并将其添加到客户端计时中。这将从第一个请求中删除客户端计时,并添加应用程序启动持续时间。但是我没有获得定制的计时等。另外,由于我使用AddProfilerResults方法将我的API配置文件合并到我的MVC配置文件中(对于MVC UI,它们是分步包装的),第一个MVC请求的API启动时间不包括在内,而且基本上丢失了

            MiniProfiler.Current.ClientTimings = new ClientTimings
            {
                Timings = new List<ClientTimings.ClientTiming>
                {
                    new ClientTimings.ClientTiming
                    {
                        Duration = startTime,
                        Id = Guid.NewGuid(),
                        MiniProfilerId = Guid.NewGuid(),
                        Name = "Application_Start",
                        Start = 0
                    }
                }
            };
MiniProfiler.Current.ClientTimings=新的ClientTimings
{
计时=新列表
{
新建ClientTimings.ClientTiming
{
持续时间=开始时间,
Id=Guid.NewGuid(),
MiniProfilerId=Guid.NewGuid(),
Name=“应用程序启动”,
开始=0
}
}
};

我们在这里处理堆栈溢出的方法是在startup方法中创建一个
MiniProfiler
,向其添加步骤,然后将其呈现为静态字符串:

public static string ApplicationStartTimings { get; private set; }

protected void Application_Start(object sender, EventArgs e)
{
    // init MiniProfiler.Settings here
    // ...
    var prof = new MiniProfiler("Application_Start");

    using (prof.Step("Register routes"))
    {
        RegisterRoutes(RouteTable.Routes);
    }

    // ... more config and steps

    try
    {
        ApplicationStartTimings = prof.Render().ToString();
    }
    catch { }
}
然后,您可以有一个路线来显示这些计时。这很有意思,但能完成任务

编辑-我在此工作中添加了一个;以下是主索引页上的输出:


怎么做?这会失败,因为没有HTTPCONTEXT,所以当您尝试使用httpruntimecache时,它会立即消失。应用程序爆炸起火。您没有运行集成模式吗?用于缓存的属性是静态的,所以我不想疯狂地交换它。另外,您没有对如何将其添加到每页探查器发表评论。我已经用一些工作代码更新了我的答案。至于你的爆炸案,你能把你用的密码贴出来吗?我很确定
MiniProfiler
构造和
.Step()
不应该涉及
HttpContext
上的任何内容,但我可能错了(自从上次查看以来,项目已经发生了很大变化).对于如何将这些启动计时纳入所有页面的/ajax请求计时,我没有什么好的建议-因为它们只运行一次,所以我们只有一个显示它们的路径。您可以在探查器的页脚中添加一个链接到此路由,甚至链接的文本也可能具有总持续时间,例如[启动(100ms)]好的。酷。我想我可以接受这个。我在问如何从应用程序开始向请求添加配置文件,以便您可以一起查看它们。这不会捕获我想要的所有内容,因为它的内部步骤将访问行中的MiniProfiler.Current.Step(“”)。那东西丢了。一切都失去了。但是,我想这是我得到的最好的了。