【问题标题】:SignalR trigger System.InvalidOperationException in Microsoft.ApplicationInsights.dllSignalR 在 Microsoft.ApplicationInsights.dll 中触发 System.InvalidOperationException
【发布时间】:2018-05-21 14:18:36
【问题描述】:

SignalR 每秒触发 Microsoft.ApplicationInsights.dll 中的 System.InvalidOperationException。

如何将 SignalR 与应用洞察结合使用?

这似乎与 SQL 背板有关:Microsoft.AspNet.SignalR.SqlServer

    public class UnwantedTelemetryFilter : ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }

        public UnwantedTelemetryFilter(ITelemetryProcessor next)
        {
            this.Next = next;
        }

        public void Process(ITelemetry item)
        {
            var request = item as RequestTelemetry;

            if (request != null && request.Name != null)
                if (request.Name.Contains("signalr"))
                    return;

            var dependency = item as DependencyTelemetry;
            if(dependency != null)
            {
                switch(dependency.Type)
                {
                    case "SQL":
                        if(String.IsNullOrEmpty(dependency.Data))
                        {
                            return;
                        }

                        break;
                }
            }

            // Send everything else:
            this.Next.Process(item);
        }

        public static void Set()
        {
            var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
            builder.Use((next) => new UnwantedTelemetryFilter(next));
            builder.Build();
        }
}

错误信息:

Stacktrace:
at Microsoft.ApplicationInsights.Extensibility.Implementation.Metrics.DependencyMetricsExtractor.ExtractMetrics(ITelemetry fromItem, Boolean& isItemProcessed)

Error:
    Message "Cannot execute ExtractMetrics because this metrics extractor has not been initialized (no metrics manager)."   string

这就是我启动 Application Insights 的方式。它在 Application_Start 中执行。

    public static void SetApplicationInsights()
    {
        #if(DEBUG)
            Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = true;
        #endif

        Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.DisableTelemetry = true;
        string t = Settings.KeyVault.Global.GetKey("AppInsightsInstrumentationKey");
        if (!String.IsNullOrEmpty(t))
        {
            UnwantedTelemetryFilter.Set();
            Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = t;
            Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.DisableTelemetry = false;

        }
    }

【问题讨论】:

  • 对这个问题感到困惑。您是说您从应用程序洞察力本身中获得了无效的操作异常吗?或超出您发布的代码。如果您遇到异常,您可以发布完整的堆栈跟踪吗?如果堆栈跟踪在 AI 的代码中,您应该将其作为问题发布到我们的 GitHub 存储库:github.com/Microsoft/ApplicationInsights-dotnet
  • @JohnGardner 这不是代码,但在输出窗口中,我每秒都会收到该异常。似乎它与SQL有关。不过一切正常。
  • 你能在那个异常上设置一个断点并获取它的堆栈跟踪吗?
  • @JohnGardner 我已经用信息更新了问题。

标签: c# asp.net-mvc signalr azure-application-insights


【解决方案1】:

鉴于您添加的带有错误信息的新消息,您似乎遇到了这个 GitHub 问题:

GitHub issue #549: DependencyMetricsExtractor.ExtractMetrics threw exceptions

如果您通过代码手动添加遥测处理器,您需要对它们调用初始化吗?

这个特定问题似乎在几个月前得到解决,您可能需要更新到较新版本的 SDK,或使用该问题中指定的解决方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多