Problema
Con el agente .NET habilitado para una aplicación Windows Communication Foundation (WCF), el encabezado de respuesta Content-Type
cambia inesperadamente a application/xml
.
Solución
Basic solutions | Comments |
---|---|
Deshabilite la característica Multiaplicación Tracing (CAT). | Lea acerca de cómo cambiar la configuración CAT. Si necesita que CAT permanezca habilitado, consulte las otras soluciones. |
Utilice la característica rastreo distribuido (DT) en lugar de CAT. | Lea acerca de cómo habilitar la configuración de DT. DT es una forma nueva y mejorada de realizar el rastreo y tiene una característica mejorada, en comparación con CAT, en la UI de New Relic. DT no requiere modificaciones en los encabezados de respuesta y no se verá afectado por el cambio de encabezados de respuesta. |
Agregue el encabezado | Esta solución requiere que modifique el código de su aplicación. |
Causa
La característica Multiaplicación Tracing (CAT) está habilitada por defecto en el agente .NET. CAT funciona agregando encabezados tanto a los mensajes de solicitud como a los mensajes de respuesta.
Esto es lo que sucede en el agente:
- Se ejecuta la implementación del método de servicio WCF.
- El agente intentará agregar encabezados CAT a la respuesta WCF agregando una instancia
HttpResponseMessageProperty
, con los encabezados CAT, aOperationContext.Current.OutgoingMessageProperties
. - El
DispatchMessageFormatter
personalizado se ejecuta y crea un nuevo mensaje donde el encabezadoContent-Type
esperado se agrega directamente al nuevo mensaje. - La implementación de WCF de Microsoft intentará fusionar las propiedades del mensaje definidas en el mensaje de respuesta con las propiedades del mensaje definidas en
OperationContext
. Consulte esta referencia de Microsoft en ImmutableDispatchRuntime.cs para obtener más detalles. - El
HttpResponseMessageProperty
no admite la combinación, por lo que se utiliza el valor definido enOperationContext
en lugar del valor definido en el mensaje. - Como resultado, el encabezado
Content-Type
que se agregó originalmente al mensaje formateado se descarta y se utiliza el encabezadoContent-Type
predeterminado.
Dado que el agente debe admitir múltiples enlaces WCF, debe agregar nuestros encabezados CAT al OperationContext
.