我有一个在本地IIS服务器上运行的MVC应用程序。我在Azure上有一个现有的App Insights资源,我希望从我的应用程序中显示Telemetry。但是,跟踪消息未显示在Azure门户上。我已将ApplicationInsights添加到我的项目中,指定了Telemetry应该在ApplicationInsights.config中显示的资源,还编写了我在代码中使用的TelemetryWrapper,以发送实际的遥测信息和错误消息。
我通过包装器初始化遥测服务:
TelemetryWrapper.InitializeTelemetry("InstrumentationKey", "ApplicationName");
并从包装器发送消息
TelemetryWrapper.TelemetryInfo(requestId, action, userId, ultimateId, systemId, payload);
TelemetryWrapper概述:
public static void InitializeTelemetry(string apiKey, string appId)
{
bool postBackground = true;
_telemetry = new TelemetryHelper(apiKey, appId, false) { PostBackground = postBackground };
}
public static void TelemetryInfo(Guid requestId, string action, Guid userId, string ultimateId, string systemId,
string payload)
{
var telem = CreateInstance(requestId, action, ultimateId, userId, systemId, payload);
_telemetry.Info(telem);
}
我可能做错了什么?
答案 0 :(得分:1)
需要更多信息。你所展示的只是你的代码,这里没有AppInsights代码可供查看。所以可能是你的TelemetryHelper
类没有正确设置ikey,ikey可能无效。
但是:我突然想到的是您在代码中使用了apiKey
和appId
这两个词。
这两件事在应用程序见解中具有特定含义,但那是来自AI API服务的读取数据(并且在该上下文中的apiKey是您可以认为是秘密的东西,就好像有人拥有这些钥匙,他们可以阅读你所有的数据!)我不确定你是否在这里使用它们,但是马上就跳出来了。
用于发送数据到应用程序洞察的不同的事物,“Instrumentation Key”或iKey
。您是否可以切换这些东西并尝试使用AI appId和apiKey代替iKey?
检查的一种方法是在本地使用fiddler或其他工具来监视出站http流量。将其配置为解密https,并监视对您的遥测所在的dc.services.visualstudio.com的出站呼叫。如果您有外拨电话,那么它至少会尝试发送您的遥测。如果这些调用失败,则响应可能会告诉您正在使用的iKey无效,如果是这种情况。
您不需要