Problema
Com o agente .NET habilitado para um aplicativo Windows Communication Foundation (WCF), o cabeçalho de resposta Content-Type é alterado inesperadamente para application/xml.
Solução
Basic solutions | Comments |
|---|---|
Desabilite o recurso de Rastreamento Multiaplicativo (CAT). | Leia sobre como alterar a configuração do CAT. Se precisar que o CAT permaneça habilitado, consulte as outras soluções. |
Use o recurso distributed tracing (DT) em vez de CAT. | Leia sobre como habilitar a configuração DT. DT é uma forma nova e aprimorada de realizar rastreamento e possui recurso aprimorado, comparado ao CAT, na interface New Relic. A DT não requer modificações nos cabeçalhos de resposta e não será afetada pela alteração dos cabeçalhos de resposta. |
Adicione o cabeçalho | Esta solução requer que você modifique o código do seu aplicativo. |
Causa
O recurso Multiaplicativo Tracing (CAT) está habilitado por padrão no agente .NET. CAT funciona adicionando cabeçalhos às mensagens de solicitação e às mensagens de resposta.
Isto é o que acontece no agente:
- A implementação do método de serviço WCF é executada.
- O agente tentará adicionar cabeçalhos CAT à resposta do WCF adicionando uma instância
HttpResponseMessageProperty, com os cabeçalhos CAT, aOperationContext.Current.OutgoingMessageProperties. - O
DispatchMessageFormatterpersonalizado é executado e cria uma nova mensagem onde o cabeçalhoContent-Typeesperado é adicionado diretamente à nova mensagem. - A implementação do WCF da Microsoft tentará mesclar as propriedades da mensagem definidas na mensagem de resposta com as propriedades da mensagem definidas em
OperationContext. Consulte esta referência da Microsoft em ImmutableDispatchRuntime.cs para obter mais detalhes. - O
HttpResponseMessagePropertynão suporta mesclagem, portanto, o valor definido emOperationContexté usado em vez do valor definido na mensagem. - Como resultado, o cabeçalho
Content-Typeque foi originalmente adicionado à mensagem formatada é descartado e o cabeçalhoContent-Typepadrão é usado.
Como o agente deve oferecer suporte a várias associações WCF, ele precisa adicionar nossos cabeçalhos CAT ao OperationContext.