应用洞察

Application Insights

我有两个项目:一个是MVC4应用程序,另一个是输出类型class库。

我想使第二个项目(class 库中的一个)成为见解交流层。

代码编译成功,服务器运行正常

public static void SaveMetric(string title, double value, 
    string azureKey, Dictionary<string, string> properties = null)
{
    try
    {
        TelemetryClient telemetry = new TelemetryClient();
        telemetry.InstrumentationKey = azureKey;
        telemetry.TrackMetric(title, value, properties);
    }
    catch (Exception ex)
    { 
        var a = "";
    }
}

当我调用 telemetry.TrackMetric 函数时问题就开始了。此代码returns错误:

"Object reference not set to an instance of an object."(System.NullReferenceException).

是否可以在 class 图书馆项目中使用 Microsoft Insights?如果是,我做错了什么?

深入寻找解决方案后,我发现问题出在我所做的更新(版本 1.0 到 1.2)上。解决方案是将软件降级到 v1.0.

我最近升级到 1.2.0 并且 运行 遇到了同样的问题。除了标准设置之外,我的代码还用 web.config 中存储的一个覆盖了 ApplicationInsights.config 中的检测密钥。这是通过 global.asax - Application_Start 完成的。该代码在本地运行良好,但在部署到 Azure 时就会崩溃。

原来是我如何访问 web.config 的问题。我不得不将我的代码从使用 WebConfigurationManager 切换到 ConfigurationManager

这个Application_Start代码:

Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = System.Web.Configuration.WebConfigurationManager.AppSettings["MyInstrumentationKey"];

改为:

Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = System.Configuration.ConfigurationManager.AppSettings["MyInstrumentationKey"];