Использование TelemetryClient в Applicationinsightss работает только тогда, когда клиент создается в инструкции using TelemetryConfiguration. - PullRequest
0 голосов
/ 19 июня 2020

Я работаю с ApplicationInsights, определяя и отправляя свои собственные пользовательские события.

Я использую для этого клиент телеметрии. Это работает, только если я создаю экземпляр и использую свой объект telemetryclient следующим образом:

        TelemetryClient telemetryClient;
        using (var telemetryConfiguration = new TelemetryConfiguration("instrumentationKey"))
        {
            telemetryClient = new TelemetryClient(telemetryConfiguration);

            telemetryClient.TrackEvent("CustomEvent1");

            telemetryClient.Flush();
            Thread.Sleep(5000);
        }

Проблема в том, что я хочу внедрить telemtryClient в разные службы. Однако вызов этого вызова в той же позиции не создает событий на портале:

            TelemetryClient telemetryClient;
        using (var telemetryConfiguration = new TelemetryConfiguration("instrumentationKey"))
        {
            telemetryClient = new TelemetryClient(telemetryConfiguration);

        }


        telemetryClient.TrackEvent("CustomEvent1");

        telemetryClient.Flush();
        Thread.Sleep(5000);

Это неправильный способ использования telemtryClient?

1 Ответ

1 голос
/ 21 июня 2020

Если вы пишете. Net Core Application, вы можете настроить внедрение зависимостей TelemetryClient в методе ConfigureServices вашего Startup.cs. См. здесь для полного примера.

public void ConfigureServices(IServiceCollection services)
{
        ...
        services.AddApplicationInsightsTelemetry();
        ...
}

Затем, если вы пишете приложение Mvc, например, вы можете внедрить TelemetryClient в свои контроллеры следующим образом:

private readonly TelemetryClient tc;

public MyController(TelemetryClient _tc)
{
    tc = _tc;
} 

public HttpResponseMessage Get(int id)
{
    tc.TrackEvent("CustomEvent1");
    ...
}

Не забудьте также настроить параметры вашего приложения. json правильно:

"ApplicationInsights": {
"InstrumentationKey": "..." }

Надеюсь, это поможет, Андреас

...