我正在为离线发布数据到云天蓝色工作。所以,通过编辑dll,我可以这样做吗?有办法编辑dll吗??
发布于 2019-01-02 11:11:51
是的,这是可能的,但这要视情况而定。
场景1
如果您正在处理的应用程序有时会失去它的netwerk连接,那么您可以使用ServerTelemetryChannel。
场景2
如果您想要将遥测脱机存储在一个中心位置,并且有一个独立的进程将遥测发送到Application,那么不,没有现成的解决方案。请参见这个问题。
现在,对于第一个场景,这是可行的:
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活动后发送。至少我就是这么测试的。
https://stackoverflow.com/questions/54001089
复制相似问题