【发布时间】: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