2016-08-15 8 views
3

MVCアプリケーションでApplication Insightを有効にしただけで、ローカルでデバッグするとき、Azure Application Insight内でトレース情報がキャプチャされていることに気付きました。デバッグモード時のアプリケーションの洞察

デバッグモードでは、自分のアプリケーションがAzure Application Insight内でイベントを記録するのを止めたいが、Visual Studio内の[診断ツール]> [イベント]ウィンドウにはイベントとログ情報が表示されます。

私は以下を試しましたが、これでイベントが私のAzure AIでキャプチャされなくなりましたが、Visual Studioはイベントウィンドウにデバッグ情報を表示しなくなりました。

protected void Application_Start() 
{ 
     #if DEBUG 
     TelemetryConfiguration.Active.DisableTelemetry = true; 
     #endif 
} 

私は無駄な答えをネットでサーフィンしました。誰かが助けることを願っています。

答えて

2

これを行う最も簡単な方法は、計装キーをすべて0に設定することです。 NULL iKeyはありませんので、効果的にメッセージをドロップします。

00000000-0000-0000-0000-000000000000 

あなたがApplication_Start()を使用する場合は、#DEBUGディレクティブのいずれかを使用してこれを行うことができたり、System.Diagnostics.Debugger.IsAttachedプロパティを使用することができます。しかし、この方法は完全にではありません。試してみることはできますが、経験は一貫していないかもしれません。

時間がある場合は、デバッガが接続されているかどうかに基づいて計測キーを変更するTelemetryInitializerを作成する必要があります。これは、デバッグセッション内にいる場合にのみこれが行われることを保証します。そうすれば、誤ってDebugを本番環境にリリースすると、遠隔測定を失うことはありません。

public class CustomeWebRequestTelemetryModule : Microsoft.ApplicationInsights.Extensibility.ITelemetryInitializer 
{ 
    public void Initialize(ITelemetry telemetry) 
    { 
     if (telemetry != null && System.Diagnostics.Debugger.IsAttached) 
     { 
      telemetry.Context.InstrumentationKey = "00000000-0000-0000-0000-000000000000"; 
     } 
    } 
} 
+0

これは完全に働いたが、と私が探していたアプローチです。ありがとうございました。 – jgill09

0

Application Insightsでテレメトリを送信することについて、何が心配ですか?たとえば、デバッグ環境でのみ使用されるApplication Insightsリソース(計測キーで識別される)を別途用意することができます。本番環境では、インスツルメンテーションキーを切り替えて運用リソースを指すようにします。

また、「ローカルモード」 - Azureに接続せずにVisual StudioでApplication Insightを使用する機能を導入しました。この場合、最後のデバッグセッションからのテレメトリーは、ローカルマシン上に保存され、検索と診断ハブへの統合で利用できます。ここをクリックしてください:https://azure.microsoft.com/en-us/documentation/articles/app-insights-release-notes-vsix/#version-43

これを実現するには、instrumentins.xmlから計測キーを削除する必要がありますが、100%確実ではないと思います。同僚にもっと詳しい情報を追加するように依頼します...あなたが探しているものであればお知らせください。あなたはiKeyをするために0を使用している場合、あなたははおそらくまだテレメトリを送っているが、それはおそらくも無効とAIのバックエンドによって拒否されですが オレグ

0

@DebugThingsは、(主に)動作します答えます私は

個別の「デバッグ」iKeyを作成し、デバッグモードでビルドされたコードでは代わりにiKeyを使用するのが最適なソリューションです。

protected void Application_Start() 
{ 
    #if DEBUG 
    TelemetryConfiguration.Active.InstrumentationKey = "your debug ikey"; 
    #endif 
} 

この方法では、あなたの設定ファイルの「デバッグ」本番環境を汚染せずに送信、およびリリースでビルドしている任意のテレメトリ、のiKeyはまだ使用されますすることができます。これにより、現在許可されている固定番号を使わずに適切なカスタムプロパティ/メトリックを送信していることを確認できます。ここで

はなど、環境に応じて別の場所にデータを送信するための設定を使用する方法についてのブログ記事です:

https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/07/application-insights-support-for-multiple-environments-stamps-and-app-versions/

同様の答えとここに同様の質問があります: Disable application insights in debug

関連する問題