• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

API d'agent .NET

L'agent .NET de New Relic inclut une API qui vous permet d'étendre les fonctionnalités standard de l'agent. Par exemple, vous pouvez utiliser l'API .NET d'agent pour :

  • Personnalisez le nom de votre application
  • Créer un paramètre de transaction personnalisé
  • Signaler les erreurs et les mesures personnalisées

Vous pouvez également personnaliser certains comportements par défaut de l'agent .NET en ajustant les paramètres de configuration ou en utilisant une instrumentation personnalisée.

Exigences

Pour utiliser l'API .NET deagent, assurez-vous que vous disposez de la dernière version de l'agent .NET. Ensuite, ajoutez une référence à l’agent dans votre projet en utilisant l’une des deux options ci-dessous :

Notes sur l'injection de dépendances

Si vous consommez l'API d’agent via Microsoft.Extensions.DependencyInjection (ou un conteneur similaire), il existe deux pièges qui désactiveront silencieusement votre instrumentation personnalisée sans produire d'erreur. Les deux découlent du fait que IAgent est un handle à longue durée de vie, mais que CurrentTransaction et CurrentSpan sont des vues à l'échelle de la requête qui doivent être relues à chaque appel.

Enregistrer IAgent de manière différée, et non de manière anticipée

GetAgent() doit être appelé après que le profileur a fini de s'attacher. Si vous le résolvez de manière anticipée pendant la construction du conteneur DI, vous risquez de mettre en cache l’espace réservé no-op que l’API renvoie avant que l’agent ne soit actif, laissant l’application avec une API silencieusement désactivée pour la durée de vie du processus. Utilisez une lambda de fabrique pour que l'appel soit différé à la première résolution :

// ❌ Eager — may capture the no-op placeholder
builder.Services.AddSingleton<IAgent>(NewRelic.Api.Agent.NewRelic.GetAgent());
// ✅ Lazy — GetAgent() runs on first resolution, after the profiler is ready
builder.Services.AddSingleton<IAgent>(_ => NewRelic.Api.Agent.NewRelic.GetAgent());

Ne mettez pas en cache ITransaction ou ISpan dans les champs

IAgent lui-même peut être stocké en toute sécurité, mais CurrentTransaction et CurrentSpan doivent être lus à nouveau à chaque fois que vous les utilisez. Les capturer dans un constructeur ou un champ lie votre service à la requête qui se trouvait être en cours lorsque le champ a été assigné pour la première fois. Chaque appel ultérieur écrit alors des attributs, des erreurs, et des événements dans une transaction qui est déjà terminée, et les données n'apparaissent jamais sur les transactions que vous consultez réellement.

// ❌ Captures one request's transaction forever
public class BuggyService
{
private readonly ITransaction _transaction;
public BuggyService(IAgent agent) => _transaction = agent.CurrentTransaction;
}
// ✅ Fetch per-call
public class WorkService
{
private readonly IAgent _agent;
public WorkService(IAgent agent) => _agent = agent;
public void DoWork()
{
var transaction = _agent.CurrentTransaction;
transaction.AddCustomAttribute("key", "value");
}
}

Pour un guide complet et exécutable, y compris des exemples d'anti-modèles vérifiés à la compilation, consultez l'exemple d'injection de dépendance (api-dependency-injection) dans le référentiel newrelic-dotnet-examples.

Liste des appels d'API

La liste suivante contient les différents appels que vous pouvez effectuer avec l'API, y compris la syntaxe, les exigences, les fonctionnalités et les exemples :

Droits d'auteur © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.