Überwachen der Nutzung und Leistung von klassischen Windows-Desktop-AppsMonitoring usage and performance in Classic Windows Desktop apps

Lokal, in Azure oder in anderen Clouds gehostete Anwendungen können Application Insights nutzen.Applications hosted on premises, in Azure, and in other clouds can all take advantage of Application Insights. Die einzige Einschränkung besteht darin, dass die Kommunikation mit dem Application Insights-Dienst zugelassen werden muss.The only limitation is the need to allow communication to the Application Insights service. Für die Überwachung von UWP-Anwendungen (universelle Windows-Plattform) wird Visual Studio App Center empfohlen.For monitoring Universal Windows Platform (UWP) applications, we recommend Visual Studio App Center.

So senden Sie Telemetriedaten aus einer klassischen Windows-Anwendung an Application InsightsTo send telemetry to Application Insights from a Classic Windows application

  1. Erstellen Sie im Azure-Portal eine Application Insights-Ressource.In the Azure portal, create an Application Insights resource. Wählen Sie als Anwendungstyp "ASP.NET-App" aus.For application type, choose ASP.NET app.

  2. Erstellen Sie eine Kopie des Instrumentierungsschlüssels.Take a copy of the Instrumentation Key. Diesen finden Sie in der Dropdownliste „Essentials“ der neuen Ressource, die Sie gerade erstellt haben.Find the key in the Essentials drop-down of the new resource you just created.

  3. Bearbeiten Sie die NuGet-Pakete Ihres App-Projekts in Visual Studio, und fügen Sie ihnen „Microsoft.ApplicationInsights.WindowsServer“ hinzu.In Visual Studio, edit the NuGet packages of your app project, and add Microsoft.ApplicationInsights.WindowsServer. (Oder wählen Sie „Microsoft.ApplicationInsights“ aus, wenn Sie nur die reine API ohne die Standardmodule zur Telemetrieerfassung verwenden möchten.)(Or choose Microsoft.ApplicationInsights if you just want the bare API, without the standard telemetry collection modules.)

  4. Legen Sie den Instrumentierungsschlüssel im Code fest:Set the instrumentation key either in your code:

    TelemetryConfiguration.Active.InstrumentationKey = "Ihr Schlüssel";TelemetryConfiguration.Active.InstrumentationKey = " your key ";

    Oder legen Sie ihn in der Datei „ApplicationInsights.config“ fest (wenn Sie eines der Standardtelemetriepakete installiert haben):or in ApplicationInsights.config (if you installed one of the standard telemetry packages):

    <InstrumentationKey>Ihr Schlüssel</InstrumentationKey><InstrumentationKey>your key</InstrumentationKey>

    Wenn Sie die Datei „ApplicationInsights.config“ verwenden, stellen Sie sicher, dass ihre Eigenschaften im Projektmappen-Explorer auf Buildvorgang = Inhalt, In Ausgabeverzeichnis kopieren = Kopierenfestgelegt sind.If you use ApplicationInsights.config, make sure its properties in Solution Explorer are set to Build Action = Content, Copy to Output Directory = Copy.

  5. Verwenden Sie die API , um Telemetriedaten zu senden.Use the API to send telemetry.

  6. Führen Sie die App aus, und sehen Sie sich die Telemetriedaten in der Ressource an, die Sie im Azure-Portal erstellt haben.Run your app, and see the telemetry in the resource you created in the Azure portal.

BeispielcodeExample code

using Microsoft.ApplicationInsights;

    public partial class Form1 : Form
    {
        private TelemetryClient tc = new TelemetryClient();
        ...
        private void Form1_Load(object sender, EventArgs e)
        {
            // Alternative to setting ikey in config file:
            tc.InstrumentationKey = "key copied from portal";

            // Set session data:
            tc.Context.Session.Id = Guid.NewGuid().ToString();
            tc.Context.Device.OperatingSystem = Environment.OSVersion.ToString();

            // Log a page view:
            tc.TrackPageView("Form1");
            ...
        }

        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = true;

            if (tc != null)
            {
                tc.Flush(); // only for desktop apps

                // Allow time for flushing:
                System.Threading.Thread.Sleep(1000);
            }
            base.OnClosing(e);
        }

Außerkraftsetzung des gespeicherten ComputernamensOverride storage of computer name

Standardmäßig erfasst und speichert dieses SDK den Computernamen des Systems, das Telemetriedaten ausgibt.By default this SDK will collect and store the computer name of the system emitting telemetry. Zum Überschreiben der Erfassung müssen Sie einen Telemetrie-Initialisierer verwenden:To override collection you need to use a telemetry Initializer:

Schreiben Sie einen benutzerdefinierten Telemetrie-Initialisierer wie nachfolgend gezeigt.Write custom TelemetryInitializer as below.

using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;

namespace CustomInitializer.Telemetry
{
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
            {
                //set custom role name here, you can pass an empty string if needed.
                  telemetry.Context.Cloud.RoleInstance = "Custom RoleInstance";
            }
        }
    }
}

Instanziieren Sie den Initialisierer in der Program.cs Main()-Methode unten, indem Sie den Instrumentierungsschlüssel festlegen:Instantiate the initializer in the Program.cs Main() method below setting the instrumentation key:

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;

   static void Main()
        {
            TelemetryConfiguration.Active.InstrumentationKey = "{Instrumentation-key-here}";
            TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
        }

Nächste SchritteNext steps