我想使用MiniProfiler计算Application_OnStart。到目前为止,我一直没有成功。我试图创建一个Timing并将其添加到root的子节点,但它不会收集我想要的所有数据。它还会从整体配置文件时间中减去启动时间,因此最终会显示负的持续时间。目前我唯一的解决方案是使用秒表计时并将其添加到客户端计时。这将从第一个请求中删除客户端计时,并添加应用程序启动持续时间。但我没有获得自定义时序等。此外,因为我使用AddProfilerResults方法在我的MVC配置文件中组合我的API配置文件(对于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
}
}
};
答案 0 :(得分:5)
我们在Stack Overflow上执行此操作的方法是在启动方法中创建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 { }
}
然后您可以有一条路线来显示这些时间。这很糟糕,但是完成了工作。
编辑 - 我添加了branch to my MiniProfiler fork which demonstrates这个工作;这是主索引页面上的输出: