我正在使用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);
}
这些都没有奏效。有什么想法吗?
答案 0 :(得分:13)
探查器的home page(参见“放弃探查器会话”部分)的使用模式正在寻找:
protected void Application_BeginRequest()
{
MvcMiniProfiler.MiniProfiler.Start();
}
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if(!CurrentUserIsAllowedToSeeProfiler())
{
MvcMiniProfiler.MiniProfiler.Stop(discardResults: true);
}
}
CurrentUserIsAllowedToSeeProfiler
的实现将检查查询字符串是否包含触发分析器的键。
修改强>:
您还可以查看他们的Example Project,了解他们在某些情况下如何实施禁用功能。他们的检查是看你是否通过localhost访问它,但你可以改为检查查询字符串。
基于此,看来“尝试#1”应该是诀窍。请注意,“关闭”和“尝试#1”之间的区别在于前者正在查找查询字符串profiling
,而您的尝试#1正在检查showProfiler
。它可能只是一个简单的查询字符串混合?
答案 1 :(得分:0)
在开始请求事件中正常启动探查器。然后在您的控制器或视图中,检查查询字符串并调用MiniProfiler.Stop(true)
以丢弃已分析的数据(如果它没有或设置为false)。
protected void Application_BeginRequest()
{
MiniProfiler.Start();
}
然后在你看来:
@if(!Request.QueryString.AllKeys.Contains("profiling"))
{
MiniProfiler.Stop(true);
}
答案 2 :(得分:0)
我在上面没有找到解决方案。
对我来说,唯一的解决方案是在 Web.Config 文件中设置 debug =“ false” 。
<compilation defaultLanguage="c#" debug="false" batch="false" targetFramework="4.5.2">
希望这对其他人也有帮助。