如何隐藏miniprofiler?

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

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

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

@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实现将检查查询字符串是否包含触发分析器的键。


编辑

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

基于此,似乎“尝试#1”应该是诀窍。 请注意,“关闭”和“尝试#1”之间的区别是前者正在查找查询字符串profiling ,而您的尝试#1正在检查showProfiler 。 它可能只是一个简单的查询字符串混合?

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

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

然后在你看来:

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