考虑以下简单程序:
Program.cs的
using Microsoft.ApplicationInsights;
namespace azure
{
class Program
{
static void Main(string[] args)
{
var tc = new TelemetryClient();
tc.Context.InstrumentationKey = "***MY KEY IS HERE***";
tc.TrackTrace("Hello World!");
tc.Flush();
}
}
}
packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.ApplicationInsights" version="2.5.1" targetFramework="net452" />
<package id="System.Diagnostics.DiagnosticSource" version="4.4.0" targetFramework="net452" />
</packages>
的App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
azure.csproj
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2F7BE378-D37D-4297-AF97-4A9E771CF84C}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>azure</RootNamespace>
<AssemblyName>azure</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.ApplicationInsights, Version=2.5.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.2.5.1\lib\net45\Microsoft.ApplicationInsights.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.4.0\lib\net45\System.Diagnostics.DiagnosticSource.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
我在Visual Studio 2015中编译它。
应该向我的Application Insights帐户发送内容,对吧?但我没有看到任何东西。
缺少什么想法?
答案 0 :(得分:1)
如果您调试此项,并在应用程序结束前设置断点,您是否从应用程序洞察中看到控制台中的输出?
问题是可能您的流程在任何时间启动出站http并实际发送您的数据之前结束。
flush方法不是同步的,应用程序在终止之前不等待它发送。
旧的但可能相关的相关问题: How to prevent losing telemetry events with Application Insight's Persistence Channel?
答案 1 :(得分:0)
如果将ApplicationInsight nuget添加到项目中,它将为您设置所有内容,包括创建applicationinsights.config文件。
只需确保将遥测密钥设置为Application Insight帐户即可。
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<InstrumentationKey>{YOUR GUID HERE}</InstrumentationKey>
...
</ApplicationInsights>
答案 2 :(得分:0)
尝试将密钥设置为TelemetryConfiguration,而不是将测量密钥设置为遥测客户端上下文。
TelemetryConfiguration.Active.InstrumentationKey = {telemetryInstrumentationId};
您可以使用多个遥测客户端实例,因此不要在每个实例上设置密钥。设置将由所有实例使用的配置密钥。