如何在.net标准库中使用应用程序见解?

时间:2019-11-01 10:57:36

标签: c# azure-application-insights .net-standard class-library

我在Web api中使用了应用程序见解。它运作良好。当前,我们的控制器需要调用一个类库(由nuget包引用)。我需要在类库中使用应用程序洞察力。没有例外,但“应用程序见解”中未记录任何内容。我编写如下代码。我们的TelemetryConfiguration已在控制器中初始化。

var telemetryClient = new TelemetryClient();
var customEvent = new Microsoft.ApplicationInsights.DataContracts.EventTelemetry
{
    Name = "helloworld",
};
// customEvent.Metrics.Add({ "latency", 42});
telemetryClient.TrackEvent(customEvent);

我该怎么做才能使应用程序见解发挥作用?

1 个答案:

答案 0 :(得分:0)

通常,以下步骤足以登录到App Insights:

1-在WebApi启动类和库项目中,通过nuget添加App Insights程序集。

Microsoft.ApplicationInsights

2-在启动类中注册App Insights:

services.AddApplicationInsightsTelemetry(Configuration);

3-在appsettings.json中设置您的检测密钥:

"ApplicationInsights": {
  "InstrumentationKey": "<Your instrumentation key here>"
}

4-在您需要的任何类中,注入一个TelemetryClient并使用它。

using Microsoft.ApplicationInsights

namespace MyNamesPace
{
    public class MyClass
    {
        private readonly TelemetryClient _telemetryClient;

        public MyClass(TelemetryClient telemetryClient)
        {
            _telemetryClient= telemetryClient;
        }

        public myClassMethod()
        {
            // Use your _telemetryClient instance
            _telemetryClient.TrackEvent("Your Telemetry Event");
        }
    }
}

4-在您的控制器中注入您的班级

namespace MyApiNamesPace
{
    public class MyController : ControllerBase
    {
        private readonly IMyClass _myClass;

        public MyClass(IMyClass myClass)
        {
            _myClass = myClass;
        }

        public IActionResult myAction()
        {
            _myClass.MyClassMethod();
        }
    }
}

5-不要忘记在启动类中的DI容器中注册您的类:

services.AddScoped<IMyClass, MyClass>();

编程愉快!