4

我有一个使用母版页的简单 Web 表单应用程序。

我按照有关如何使迷你分析器工作的说明进行操作。我得到了所有的统计数据。现在我真的不知道如何打开或关闭它。

我想过使用查询字符串并查找它Application_BeginRequest- 如果它在那里,只需在整个会话中使用探查器.... OK- 会话在那个阶段没有加载,如果使用Application_AcquireRequestStateand 一个静态变量,它会加载它很多次探查器有时会工作,有时不工作,我不知道为什么?

我现在的简单方法是。

protected void Application_BeginRequest(object sender, EventArgs e)
        {
            MiniProfiler profiler = null;

            if (Request.QueryString["p"] != null)
            {

                profiler = MiniProfiler.Start();

                using (profiler.Step("Application_BeginRequest"))
                {
                }
            }


        }

这样可以正常工作,但我必须在每个请求上添加一个查询参数。不好。我以前从未使用global.asax过,所以我不能 100% 确定它是如何工作的。

我可以在预定义的时间内设置变量的最佳方法是什么,以便在我以秘密方式打开它时始终加载分析器?


编辑和解决我的问题

 protected void Application_BeginRequest(object sender, EventArgs e)
        {
            MiniProfiler profiler = null;
            if (Request.Cookies["profiler"] != null)
            {
                profiler = MiniProfiler.Start();

                using (profiler.Step("Application_BeginRequest"))
                {
                }
            }

        }
4

1 回答 1

4

如果您通过 MiniProfiler.MVC3 包添加了 MiniProfiler,那么它会添加一个 C# 文件以方便您对其进行配置:查看App_Start\MiniProfiler.cs,特别是查看Init哪些代码决定是否开始分析(request.IsLocal是默认设置)

在您的情况下,我建议在开始条件中检查 cookie,并在结束条件中检查更完整的“我是开发人员,还是只是听说过特殊 cookie 的人” ;特别是,如果您调用MiniProfiler.Stop(false),则所有数据都将被丢弃。然后,您的“以秘密方式打开它”和“预定义时间”都可以通过 cookie 廉价地实现,其中“我是开发人员”以确保仅通过设置 cookie 就不会被滥用。

于 2013-02-07T12:14:06.150 回答