我正在使用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);
}这些都不管用。有什么想法吗?
发布于 2011-09-29 23:56:10
分析器的主页 (请参阅“放弃Profiler会话部分”)具有正在寻找的使用模式:
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”之间的区别是前者正在查找查询字符串profiling,而您的尝试#1是检查showProfiler。它可能只是一个简单的查询字符串混淆吗?
发布于 2011-09-29 23:54:54
只需像平常一样在开始请求事件中启动分析器。然后,在控制器或视图中,检查查询字符串,并调用MiniProfiler.Stop(true),如果没有或设置为false,则丢弃配置数据。
protected void Application_BeginRequest()
{
MiniProfiler.Start();
}那么在你看来:
@if(!Request.QueryString.AllKeys.Contains("profiling"))
{
MiniProfiler.Stop(true);
}发布于 2018-11-05 08:21:00
我在上面没有找到解决办法。
对我来说,唯一的解决方案是在Web.Config文件中设置debug=“false”。
<compilation defaultLanguage="c#" debug="false" batch="false" targetFramework="4.5.2">希望这对其他人也有帮助。
https://stackoverflow.com/questions/7604595
复制相似问题