c# – 如何在使用MiniProfiler时从特征分析中删除特定URL

有时候使用miniprofiler时,只有一些你不关心的请求.在我的情况下,我不太关心信号器,umbraco ping,以及当我想知道用户是否闲置时提出的一些请求.

为了避免miniprofiler在这些类型的请求中使用能量(并提供结果),我将以下代码添加到我的global.asax.cs文件中:

protected void Application_BeginRequest()
{
    if (
        (Request.IsLocal || Request.UserHostAddress == "37.49.143.197")
        && !(Request.RawUrl.Contains("/signalr/")
            || Request.RawUrl.Contains("/idle/verify")
            || Request.RawUrl.Contains("/idle/interaction")
            || Request.RawUrl.Contains("/umbraco/ping")
            )
        )
    {
        MiniProfiler.Start();
    }
}

看到我仍然收到包含给定字符串的URL的结果,我已经在Application Life Cycle中进行了此检查,试图消除我可以看到的不必要的结果,我仍然有.

protected void Application_ProcessRequest()
{
    if (Request.RawUrl.Contains("/signalr/")
        || Request.RawUrl.Contains("/idle/verify")
        || Request.RawUrl.Contains("/idle/interaction")
        || Request.RawUrl.Contains("/umbraco/ping")
        )
    {
        MiniProfiler.Stop(discardResults: true);
    }
}

但即使我已经这样做了,我仍然收到了不想要的结果.有谁知道这是怎么回事,我在这里做错了什么?

笔记

应该注意的是,因为我使用Umbraco作为我的基础,我使用MiniProfiler 2.1.0并且我开始我的Global.asax.cs文件,如下所示:

public class MvcApplication : UmbracoApplication
{    
    protected override void OnApplicationStarted(object sender,EventArgs e)
    {
        // Setup profiler for Controllers via a Global ActionFilter
        GlobalFilters.Filters.Add(new ProfilingActionFilter());

        // initialize automatic view profiling
        var copy = ViewEngines.Engines.ToList();
        ViewEngines.Engines.Clear();
        foreach (var item in copy)
        {
            ViewEngines.Engines.Add(new ProfilingViewEngine(item));
        }
    ...

解决方法

您是否尝试过使用Ignoredpaths?
protected void Application_Start()
{
    var ignored = MiniProfiler.Settings.Ignoredpaths.ToList();
    ignored.Add("/signalr/");        
    ignored.Add("/idle/verify");
    ignored.Add("/idle/interaction");
    ignored.Add("/umbraco/ping");
    MiniProfiler.Settings.Ignoredpaths = ignored.ToArray();
}

我认为这将起作用的原因是不会为静态资源触发BeginRequest和EndRequest事件.

我的理论是,你的一些请求确实是针对静态内容的,因此你所描述的事件不会触发.

使用您的Umbraco结构,代码如下所示:

protected override void OnApplicationStarted(object sender,EventArgs e)
{
    var ignored = MiniProfiler.Settings.Ignoredpaths.ToList();
    ignored.Add("/signalr/");        
    ignored.Add("/idle/verify");
    ignored.Add("/idle/interaction");
    ignored.Add("/umbraco/ping");
    MiniProfiler.Settings.Ignoredpaths = ignored.ToArray();

    // Setup profiler for Controllers via a Global ActionFilter
    GlobalFilters.Filters.Add(new ProfilingActionFilter());

    // initialize automatic view profiling
    var copy = ViewEngines.Engines.ToList();
    ViewEngines.Engines.Clear();
    foreach (var item in copy)
    {
        ViewEngines.Engines.Add(new ProfilingViewEngine(item));
    }
}

相关文章

C#项目进行IIS部署过程中报错及其一般解决方案_c#iis执行语句...
微信扫码登录PC端网站应用的案例(C#)_c# 微信扫码登录
原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...