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
DispatchMessageFormatterpersonalizado se ejecuta y crea un nuevo mensaje donde el encabezadoContent-Typeesperado 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
HttpResponseMessagePropertyno admite la combinación, por lo que se utiliza el valor definido enOperationContexten lugar del valor definido en el mensaje. - Como resultado, el encabezado
Content-Typeque se agregó originalmente al mensaje formateado se descarta y se utiliza el encabezadoContent-Typepredeterminado.
Dado que el agente debe admitir múltiples enlaces WCF, debe agregar nuestros encabezados CAT al OperationContext.