• 로그인지금 시작하세요

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

에이전트가 WCF 앱(.NET)에 대한 Content-Type 헤더를 변경합니다.

문제

WCF(Windows Communication Foundation) 애플리케이션에 대해 .NET 에이전트를 사용하도록 설정하면 응답 헤더 Content-Type 이 예기치 않게 application/xml 으)로 변경됩니다.

해결책

기본 솔루션

코멘트

CAT(교차 응용 프로그램 추적) 기능을 비활성화합니다.

CAT 구성을 변경하는 방법에 대해 읽어보십시오.

CAT를 활성화된 상태로 유지해야 하는 경우 다른 솔루션을 참조하십시오.

CAT 대신 DT(분산 추적) 기능을 사용합니다.

DT 구성을 활성화하는 방법에 대해 읽어보십시오.

DT는 추적을 수행하는 새롭고 향상된 방법이며 New Relic UI에서 CAT에 비해 향상된 기능을 제공합니다.

DT는 응답 헤더를 수정할 필요가 없으며 응답 헤더를 변경해도 영향을 받지 않습니다.

원하는 Content-Type 헤더를 메시지와 OperationContext 모두에 추가합니다.

이 솔루션을 사용하려면 애플리케이션 코드를 수정해야 합니다.

원인

CAT(Cross Application Tracing) 기능은 .NET 에이전트에서 기본적으로 활성화되어 있습니다. CAT는 요청 메시지와 응답 메시지 모두에 헤더를 추가하여 작동합니다.

이것은 에이전트에서 일어나는 일입니다:

  1. WCF 서비스 메서드 구현이 실행됩니다.
  2. 에이전트는 CAT 헤더가 있는 HttpResponseMessageProperty 인스턴스를 OperationContext.Current.OutgoingMessageProperties 에 추가하여 WCF 응답에 CAT 헤더를 추가하려고 시도합니다.
  3. 맞춤 DispatchMessageFormatter 은 예상되는 Content-Type 헤더가 새 메시지에 직접 추가되는 새 메시지를 실행하고 생성합니다.
  4. Microsoft의 WCF 구현은 응답 메시지에 정의된 메시지 속성을 OperationContext 에 정의된 메시지 속성과 병합하려고 시도합니다. 자세한 내용 은 ImmutableDispatchRuntime.cs에 대한 이 Microsoft 참조를 참조 하세요.
  5. HttpResponseMessageProperty 은 병합을 지원하지 않으므로 메시지에 정의된 값 대신 OperationContext 에 정의된 값이 사용됩니다.
  6. 결과적으로 형식이 지정된 메시지에 원래 추가된 Content-Type 헤더가 삭제되고 기본 Content-Type 헤더가 사용됩니다.

에이전트는 여러 WCF 바인딩을 지원해야 하므로 CAT 헤더를 OperationContext 에 추가해야 합니다.

Copyright © 2022 New Relic Inc.

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