在Application_BeginRequest()期间确定Glimpse是否正在运行

时间:2013-03-24 13:04:19

标签: mvc-mini-profiler glimpse

我安装了Glimpse(Glimpse MVC4)和MiniProfiler(支持EF)。

我还为Glimpse安装了MiniProfiler插件。

我有所有连接和工作。我想允许Glimpse的配置来确定MiniProfiler是否应该开始分析。也就是说,如果启用了Glimpse(通过Glimpse.axd而不是通过配置设置),我想在Application_BeginRequest()方法中调用MiniProfiler.Start()。所以,像这样:

protected void Application_BeginRequest()
{
    if (Glimpse.IsRunning)
    {
        MiniProfiler.Start();
    }
}

有没有办法确定是否启用了Glimpse?

1 个答案:

答案 0 :(得分:5)

技术上有一种方法,但我称之为hacky充其量。我会让你决定它是否适合你的目的。

var policyString = HttpContext.Current.Items["__GlimpseRequestRuntimePermissions"].ToString();
RuntimePolicy glimpsePolicy;
RuntimePolicy.TryParse(policyString, out glimpsePolicy);

if (!glimpsePolicy.HasFlag(RuntimePolicy.Off))
{
    MiniProfiler.Start();
}

我称之为黑客的原因是因为虽然Glimpse在请求开始时可能是On,但可能会稍后转为Off

此行为的一个示例是,当ASP.NET开始报告不受支持的媒体类型(如图像)时,Glimpse会自动关闭。在HTTP Handler运行之前,ASP.NET无法知道媒体类型。在这种情况下,Glimpse会说它在请求开始时处于启用状态,但在结束时它将会关闭。

相关问题