首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以这样的方式编辑Microsoftapplicationinsight.dll,以便将数据脱机发布到云端

以这样的方式编辑Microsoftapplicationinsight.dll,以便将数据脱机发布到云端
EN

Stack Overflow用户
提问于 2019-01-02 04:08:27
回答 1查看 124关注 0票数 1

我正在为离线发布数据到云天蓝色工作。所以,通过编辑dll,我可以这样做吗?有办法编辑dll吗??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-02 11:11:51

是的,这是可能的,但这要视情况而定。

场景1

如果您正在处理的应用程序有时会失去它的netwerk连接,那么您可以使用ServerTelemetryChannel

场景2

如果您想要将遥测脱机存储在一个中心位置,并且有一个独立的进程将遥测发送到Application,那么不,没有现成的解决方案。请参见这个问题

现在,对于第一个场景,这是可行的:

代码语言:javascript
复制
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();
        }
    }
}

但是,臭虫有时会阻止它的工作。对我来说,只有当我禁用(!)时,它才能工作。通过Control \ network和Internet\Network连接使用Windows配置面板的所有网络适配器

如果要禁用网络并运行此程序,您将看到一些文件出现在指定的文件夹中。恢复网络并再次运行应用程序,您将注意到这些文件将消失,因为它们被程序接收并在检测到netwerk活动后发送。至少我就是这么测试的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54001089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档