如何隐藏迷你分析器

本文关键字:分析器 隐藏 何隐藏 | 更新日期: 2023-09-27 18:10:09

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

所以,我的目标是隐藏它,只有当请求带有特定参数时才配置它。然而,我的所有尝试都没有达到我所期望的效果。

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

@if (Request.QueryString.AllKeys.Contains("showProfiler"))
{ 
    @MvcMiniProfiler.MiniProfiler.RenderIncludes()
}

这是更接近的尝试。正确地隐藏了迷你分析器信息,但在我显示它的那一刻,它配置文件的一切,因为我停止显示它。假设我配置我的页面花了3秒。我删除了查询参数,并将页面加载了三次。我再次添加我的参数,我看到4组配置文件信息。这意味着它可以跟踪所有的东西,我想知道它可能会给内存问题。

试图使该事件不再发生:

尝试1:

protected void Application_BeginRequest()
{
    if (Request.QueryString.AllKeys.Contains("showProfiler"))
    {
        MiniProfiler.Start();
    }
}

尝试2:

protected void Application_EndRequest()
{
    MiniProfiler.Stop(!Request.QueryString.AllKeys.Contains("showProfiler"));
}

尝试3:

protected void Application_EndRequest()
{
    MiniProfiler.Stop(true);
}

这些都不起作用。什么好主意吗?

如何隐藏迷你分析器

分析器的主页(参见"放弃分析器会话"部分)具有正在寻找的使用模式:

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

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


编辑:

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

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

在开始请求事件中像正常一样启动分析器。然后在您的控制器或视图中,检查查询字符串并调用MiniProfiler.Stop(true)以丢弃配置数据,如果它没有或设置为false。

protected void Application_BeginRequest()
{
    MiniProfiler.Start();  
}

那么在你看来:

@if(!Request.QueryString.AllKeys.Contains("profiling"))
{
    MiniProfiler.Stop(true);
}

我没有找到解决方法。

对我来说,唯一的解决方案是在Web中设置debug="false"。文件配置

<compilation defaultLanguage="c#" debug="false" batch="false" targetFramework="4.5.2">