다음을 통해 공유


서비스 디버그 동작

ServiceDebug 샘플은 서비스 디버그 동작 설정을 구성하는 방법을 보여 줍니다. 샘플은 ICalculator 서비스 계약을 구현하는 시작하기를 기반으로 합니다. 이 샘플에서는 구성 파일에 서비스 디버그 동작을 명시적으로 정의합니다. 또한 코드에서 명령적으로 정의할 수 있습니다.

이 샘플에서 클라이언트는 콘솔 애플리케이션(.exe)이고 서비스는 IIS(인터넷 정보 서비스)를 통해 호스트됩니다.

참고 항목

이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.

서버에 대한 Web.config 파일에서는 다음 샘플과 같이 서비스 디버그 동작을 정의하여 도움말 페이지 및 예외 처리를 사용하도록 설정합니다.

<behaviors>
     <serviceBehaviors>
         <behavior name="CalculatorServiceBehavior">
         <!-- WARNING: Setting includeExceptionDetailInFaults = "True" could result in leaking secured server information to the client.-->
         <!-- Please set this to false when deploying -->
             <serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="True"/>
         </behavior>
     </serviceBehaviors>
</behaviors>

<serviceDebug>는 서비스 디버그 동작 속성을 변경할 수 있는 구성 요소입니다. 사용자는 이 동작을 수정하여 다음을 수행할 수 있습니다.

  • FaultContractAttribute를 사용하여 예외가 선언되지 않은 경우에도 서비스에서 애플리케이션 코드에 의해 throw된 예외를 반환할 수 있습니다. 이 작업은 includeExceptionDetailInFaultstrue로 설정하여 수행합니다. 이 설정은 서버가 예기치 않은 예외를 throw하는 경우를 디버깅할 때 유용합니다.

    Important

    프로덕션 환경에서는 이 설정을 켜면 안전하지 않습니다. 예기치 않은 서버 예외에 클라이언트에 사용할 수 없는 정보가 포함될 수 있으므로 includeExceptionDetailsInFaultstrue로 설정하면 정보 누수가 발생할 수 있습니다.

  • 또한 <serviceDebug>를 사용하여 사용자가 진단 페이지를 사용하거나 사용하지 않도록 설정할 수 있습니다. 각 서비스는 서비스의 WSDL을 가져오기 위한 엔드포인트를 비롯하여 서비스에 대한 정보를 포함하는 도움말 페이지를 선택적으로 노출할 수 있습니다. 이는 httpHelpPageEnabledtrue로 설정하여 활성화할 수 있습니다. 이렇게 하면 서비스의 기본 주소에 대한 GET 요청으로 도움말 페이지가 반환될 수 있습니다. 이 주소는 다른 특성 httpHelpPageUrl을 설정하여 변경할 수 있습니다. HTTP 대신 HTTPS를 사용하여 보안을 유지할 수 있습니다. 이 작업은 httpsHelpPageEnabledhttpsHelpPageUrl을 설정하여 수행할 수 있습니다.

샘플을 실행하면 작업 요청 및 응답이 클라이언트 콘솔 창에 표시됩니다. 처음 세 가지 연산(더하기, 빼기 및 곱하기)은 성공해야 합니다. 마지막 연산("나누기 ")은 0으로 나누기 예외가 발생하여 실패합니다.

샘플을 설치, 빌드 및 실행하려면

  1. Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.

  2. C# 또는 Visual Basic .NET 버전의 솔루션을 빌드하려면 Building the Windows Communication Foundation Samples의 지침을 따릅니다.

  3. 단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.