私はEventHub、そこから読み込むwebjobに書き込みAspNetCoreのWebアプリを持っています。私は、このトランザクションの両方の部分のテレメトリーがApplication Insightの同じ操作IDを持つことを望みます。だから、Application Insightsの操作IDはいつ入手できますか?
、私はEventHubにデータを送信しようとしている時、私は、例えば、TelemetryClientのうち、操作IDを引っ張ってみてください
var myOperationId = MyTelemetryClient.Context.Operation.Id;
しかし、これは常に私にnullを与えます。私はこれを見つけたarticleと使用しようとしました
var request.HttpContext.Items["Microsoft.ApplicationInsights.RequestTelemetry"] as RequestTelemetry;
もう一度null。私はそれが必要なときに私はこの値を抽出することができる方法上の任意のポインタ?
私のコードは次のようになります。
public class Startup
{
public void ConfigureServices(IServiceCollection IServices)
{
var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
builder.Use((next) => new MyTelemetryProcessor(next));
builder.Build();
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableQuickPulseMetricStream = true;
IServices.AddApplicationInsightsTelemetry(Configuration, aiOptions);
IServices.AddMvc();
IServices.AddOptions();
TelemetryClient AppTelemetry = new TelemetryClient();
AppTelemetry.InstrumentationKey = InsightsInstrumentationKey;
IServices.AddSingleton(typeof(TelemetryClient), AppTelemetry);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseApplicationInsightsRequestTelemetry();
app.UseApplicationInsightsExceptionTelemetry();
app.UseMvc();
var configuration = app.ApplicationServices.GetService<TelemetryConfiguration>();
configuration.TelemetryInitializers.Add(new MyTelemetryInitializer());
}
}
[Route("[controller]")]
public class MyController
{
private readonly TelemetryClient mTelemetryClient;
public MyController(
TelemetryClient TelemetryClientArg)
{
mTelemetryClient = TelemetryClientArg;
}
[HttpPost]
public async Task<IActionResult> Post([FromBody]MyPostDataClass MyPostData)
{
string telemetryId = mTelemetryClient.Context.Operation.Id; // this is null
return Ok();
}
}
これは、操作IDを取得するためだけに存在するトレースでテレメトリを汚染していることを意味しますか?私はまだソースを掘り下げていますが、コンテキストに操作IDがない場合は、新しいものが作成され、そのトレースを送信するとすぐに設定されるという感覚があります。現在nullの場合は、明示的に何かに明示的に設定するだけで、同じ動作を得ることができますか? –