• /
  • EnglishEspañolFrançais日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

API del agente .NET

El agente .NET de New Relic incluye una API que le permite ampliar la funcionalidad estándar del agente. Por ejemplo, puede emplear la API del agente .NET para:

  • Personaliza el nombre de tu aplicación
  • Crear parámetro de transacción personalizado
  • Reportar errores personalizados y métricos

También puede personalizar parte del comportamiento predeterminado del agente .NET ajustando la configuración o utilizando instrumentación personalizada.

Requisitos

Para emplear la API del agente .NET, cerciorar de tener la última versión del agente .NET. Luego, agregue una referencia al agente en su proyecto usando una de las dos opciones siguientes:

Notas sobre la inyección de dependencias

Si consume la API del agente a través de Microsoft.Extensions.DependencyInjection (o un contenedor similar), hay dos obstáculos que deshabilitarán silenciosamente su instrumentación personalizada sin producir ningún error. Ambos se deben al hecho de que IAgent es un identificador de larga duración, pero CurrentTransaction y CurrentSpan son vistas de ámbito de solicitud que deben volver a leerse en cada llamada.

Registre IAgent de forma diferida, no anticipada

GetAgent() debe llamarse después de que el generador de perfiles haya terminado de adjuntarse. Si lo resuelve de forma anticipada mientras se construye el contenedor de DI, es posible que almacene en caché el marcador de posición no-op que devuelve la API antes de que el agente esté activo, dejando a la aplicación con una API deshabilitada silenciosamente durante el tiempo de vida del proceso. Usa una lambda de fábrica para que la llamada se difiera hasta la primera resolución:

// ❌ 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());

No almacene en caché ITransaction o ISpan en los campos

IAgent en sí es seguro de almacenar, pero CurrentTransaction y CurrentSpan deben leerse de nuevo cada vez que se utilicen. Capturarlos en un constructor o campo vincula su servicio a cualquier solicitud que estuviera en curso cuando el campo se asignó por primera vez. Cada llamada posterior escribe entonces atributos, errores y eventos en una transacción que ya finalizó, y los datos nunca aparecen en las transacciones que realmente está viendo.

// ❌ 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");
}
}

Para obtener un tutorial completo y ejecutable, que incluye ejemplos de antipatrones verificados por compilación, consulte el ejemplo de inyección de dependencia de la API en el respositorio newrelic-dotnet-examples.

Lista de llamadas de API

La siguiente lista contiene las diferentes llamadas que puede realizar con la API, incluida la sintaxis, los requisitos, la funcionalidad y los ejemplos:

Copyright © 2026 New Relic Inc.

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