如何隐藏miniprofiler?

Alp*_*pha 11 c# profiling asp.net-mvc-3 mvc-mini-profiler

我正在使用MVC Mini分析器来检查我的应用程序的特定部分的速度,并希望将其保留在那里以防万一发生以后的事情,我可能需要检查"出了什么问题".它不是一个完整的日志集,但它非常方便地知道什么使页面花了很长时间.

因此,我的目标是隐藏它并仅在请求带有特定参数时才对其进行配置.但是,我的尝试都没有像我期望的那样奏效.

这已经完成了不在屏幕上显示它的技巧(视图中的代码):

@if (Request.QueryString.AllKeys.Contains("showProfiler"))
{ 
    @MvcMiniProfiler.MiniProfiler.RenderIncludes()
}
Run Code Online (Sandbox Code Playgroud)

这是接近的尝试.正确隐藏迷你探查器信息,但是在我显示它的那一刻,它会描述所有内容,因为我停止显示它.所以,假设我描述了我的页面,需要3秒钟.我删除了查询参数并再次加载页面三次.我再次添加我的参数,我看到4组配置文件信息.这意味着它会记录所有内容,我想知道它是否会给内存带来问题.

尝试不再发生这种情况:

尝试1:

protected void Application_BeginRequest()
{
    if (Request.QueryString.AllKeys.Contains("showProfiler"))
    {
        MiniProfiler.Start();
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试2:

protected void Application_EndRequest()
{
    MiniProfiler.Stop(!Request.QueryString.AllKeys.Contains("showProfiler"));
}
Run Code Online (Sandbox Code Playgroud)

尝试3:

protected void Application_EndRequest()
{
    MiniProfiler.Stop(true);
}
Run Code Online (Sandbox Code Playgroud)

这些都没有奏效.有任何想法吗?

vcs*_*nes 13

主页探查的(见"弃事件探查器会话部分)具有使用模式正在寻找:

protected void Application_BeginRequest()
{
   MvcMiniProfiler.MiniProfiler.Start();  
}
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
   if(!CurrentUserIsAllowedToSeeProfiler())
   {
       MvcMiniProfiler.MiniProfiler.Stop(discardResults: true);
   }
}
Run Code Online (Sandbox Code Playgroud)

您的实现CurrentUserIsAllowedToSeeProfiler将检查查询字符串是否包含触发分析器的键.


编辑:

您还可以查看他们的示例项目,了解它们在某些情况下如何实现禁用它.他们的检查是看你是否通过localhost访问它,但你当然可以改变它来检查查询字符串.

基于此,似乎"尝试#1"应该是诀窍.请注意,一个"接近于"和"尝试#1"之间的区别是前者是寻找查询字符串profiling,而你尝试#1检查showProfiler.它可能只是一个简单的查询字符串混合?