Microsoftapplicationinsight.dll можно редактировать таким образом, чтобы использовать его в автономном режиме, отправляя данные в облако. - PullRequest
0 голосов
/ 02 января 2019

Я работаю для автономной публикации данных в облачной лазурной.Таким образом, редактируя DLL я могу сделать это ??Есть ли способ отредактировать dll ??

1 Ответ

0 голосов
/ 02 января 2019

Да, это возможно, но это зависит от ситуации.

Сценарий 1

Если вы имеете дело с приложением, которое может иногда потерять подключение к сети.тогда вы можете использовать ServerTelemetryChannel.

Сценарий 2

Если вы хотите хранить телеметрию в автономном режиме в центральном месте и иметь отдельный процесс, отправьте телеметрию в Application Insigths, тогда нет, нет готовых настроекРешение для этого.См. Также этот вопрос .

Теперь для первого сценария это сработает:

using System;
using System.Threading;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;

namespace OfflineApplicationInsights
{
    class Program
    {
        static void Main(string[] args)
        {
            var upc = new UsingPersistenceChannel();
            upc.Log("Test1");
            upc.Log("Test2");
            upc.Log("Test3");
            upc.Log("Test4");

            Console.ReadLine();

            upc.Flush();

            Thread.Sleep(2000);
        }
    }

    public class UsingPersistenceChannel
    {
        private readonly TelemetryClient _client;

        public UsingPersistenceChannel()
        {
            var config = new TelemetryConfiguration("[your key here]");
            var telemetryChannel = new ServerTelemetryChannel
            {
                StorageFolder = @"C:\Temp\ai-offline",
                DeveloperMode = false,
                MaxTelemetryBufferCapacity = 1
            };

            config.TelemetryChannel = telemetryChannel;
            telemetryChannel.Initialize(config);

            _client = new TelemetryClient(config)
            {
                InstrumentationKey = "[your key here]"
            };
        }

        public void Log(string msg)
        {
            _client.TrackTrace(msg);
        }

        public void Flush()
        {
            _client.Flush();
        }
    }
}

Но есть ошибка , котораямешает этому иногда работать.Для меня это работает, только если я отключаю (!) Все сетевые адаптеры с помощью панели конфигурации Windows через Панель управления \ Сеть и Интернет \ Сетевые подключения

Если вы отключите сеть и запустите эту программу, вы увидитенекоторые файлы появляются в указанной папке.Восстановите сеть и снова запустите приложение, и вы заметите, что файлы исчезнут, потому что они подобраны программой и отправлены после обнаружения активности netwerk.По крайней мере, так я это проверил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...