首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何隐藏微型轮廓仪?

如何隐藏微型轮廓仪?
EN

Stack Overflow用户
提问于 2011-09-29 23:49:37
回答 3查看 4.6K关注 0票数 11

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

因此,我的目标是隐藏它,并且只有当请求带有特定参数时才有它的概要文件。然而,我的尝试都没有达到我预期的效果。

这样做的好处是没有在屏幕上显示它(视图中的代码):

代码语言:javascript
复制
@if (Request.QueryString.AllKeys.Contains("showProfiler"))
{ 
    @MvcMiniProfiler.MiniProfiler.RenderIncludes()
}

这是离我们越来越近的企图。正确地隐藏迷你分析器的信息,但在我展示它的时候,它描述了自从我停止显示它之后的一切。所以,假设我分析了我的页面,它需要3秒。我删除查询参数并再次加载页面三次。我再次添加我的参数,我看到了4组配置文件信息。这意味着它可以跟踪所有的事情,我想知道它是否会产生内存问题。

试图使这种情况不再发生:

尝试1:

代码语言:javascript
复制
protected void Application_BeginRequest()
{
    if (Request.QueryString.AllKeys.Contains("showProfiler"))
    {
        MiniProfiler.Start();
    }
}

尝试2:

代码语言:javascript
复制
protected void Application_EndRequest()
{
    MiniProfiler.Stop(!Request.QueryString.AllKeys.Contains("showProfiler"));
}

尝试3:

代码语言:javascript
复制
protected void Application_EndRequest()
{
    MiniProfiler.Stop(true);
}

这些都不管用。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-29 23:56:10

分析器的主页 (请参阅“放弃Profiler会话部分”)具有正在寻找的使用模式:

代码语言:javascript
复制
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。它可能只是一个简单的查询字符串混淆吗?

票数 13
EN

Stack Overflow用户

发布于 2011-09-29 23:54:54

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

代码语言:javascript
复制
protected void Application_BeginRequest()
{
    MiniProfiler.Start();  
}

那么在你看来:

代码语言:javascript
复制
@if(!Request.QueryString.AllKeys.Contains("profiling"))
{
    MiniProfiler.Stop(true);
}
票数 0
EN

Stack Overflow用户

发布于 2018-11-05 08:21:00

我在上面没有找到解决办法。

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

代码语言:javascript
复制
<compilation defaultLanguage="c#" debug="false" batch="false" targetFramework="4.5.2">

希望这对其他人也有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7604595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档