다음을 통해 공유


WCF 디버깅에 대한 제한 사항

WCF 서비스 디버깅을 시작할 수 있는 세 가지 방법이 있습니다.

  • 서비스를 호출하는 클라이언트 프로세스를 디버깅하고 있습니다. 디버거가 서비스 내부로 진입합니다. 서비스가 클라이언트 애플리케이션과 동일한 솔루션에 있을 필요는 없습니다.

  • 서비스에 대한 요청을 만드는 클라이언트 프로세스를 디버깅하고 있습니다. 서비스는 솔루션의 일부여야 합니다.

  • 프로세스에 연결을 사용하여 현재 실행 중인 서비스에 연결합니다. 디버깅은 서비스 내에서 시작됩니다.

이 항목에서는 이러한 시나리오의 제한 사항에 대해 설명합니다.

서비스 접근 제한 사항

디버깅하는 클라이언트 애플리케이션에서 서비스를 한 단계씩 실행하려면 다음 조건을 충족해야 합니다.

  • 클라이언트는 동기 클라이언트 개체를 사용하여 서비스를 호출해야 합니다.

  • 계약 작업은 단방향일 수 없습니다.

  • 서버가 비동기인 경우 서비스 내에서 코드를 실행하는 동안에는 전체 호출 스택을 볼 수 없습니다.

  • app.config 또는 Web.config 파일에서 다음 코드를 사용하여 디버깅을 사용하도록 설정해야 합니다.

    <system.web>
      <compilation debug="true" />
    </system.web>
    

    이 코드는 한 번만 추가하면 됩니다. .config 파일을 편집하거나 프로세스에 연결을 사용하여 서비스에 이 코드를 추가할 수 있습니다. 서비스에서 프로세스에 연결 기능을 사용하면 디버그 코드가 .config 파일에 자동으로 추가됩니다. 그런 다음 .config 파일을 편집하지 않고도 서비스를 디버그하고 한 단계씩 실행할 수 있습니다.

서비스 중단에 대한 제한 사항

서비스를 종료하고 클라이언트로 돌아가면, 서비스로 들어갈 때 설명했던 것과 동일한 제한 사항이 적용됩니다. 또한 디버거를 클라이언트에 연결해야 합니다. 클라이언트를 디버깅하고 서비스를 한 단계씩 실행하면 디버거가 서비스에 연결된 상태로 유지됩니다. 이는 시작 디버깅 을 사용하여 클라이언트를 시작했는지 아니면 프로세스에 연결하여 클라이언트에 연결했는지 여부에 관계없이 적용됩니다. 서비스에 연결하여 디버깅을 시작한 경우 디버거는 아직 클라이언트에 연결되지 않습니다. 이 경우 서비스에서 나가 클라이언트로 돌아가야 하는 경우 먼저 프로세스에 연결 하여 클라이언트에 수동으로 연결해야 합니다.

서비스에 자동 연결에 대한 제한 사항

서비스에 자동으로 연결하는 데는 다음과 같은 제한 사항이 있습니다.

  • 서비스는 디버깅 중인 Visual Studio 솔루션의 일부여야 합니다.

  • 서비스를 호스트해야 합니다. 웹 사이트 프로젝트(파일 시스템 및 HTTP), 웹 애플리케이션 프로젝트(파일 시스템 및 HTTP) 또는 WCF 서비스 라이브러리 프로젝트의 일부일 수 있습니다. WCF 서비스 라이브러리 프로젝트는 서비스 라이브러리 또는 워크플로 서비스 라이브러리일 수 있습니다.

  • WCF 클라이언트에서 서비스를 호출해야 합니다.

  • app.config 또는 Web.config 파일에서 다음 코드를 사용하여 디버깅을 사용하도록 설정해야 합니다.

    <system.web>
      <compilation debug="true" />
    <system.web>
    

자체 호스팅

자체 호스팅 서비스는 IIS, WCF 서비스 호스트 또는 ASP.NET 개발 서버 내에서 실행되지 않는 WCF 서비스입니다. 자체 호스팅 서비스를 디버그하는 방법에 대한 자세한 내용은 방법: Self-Hosted WCF 서비스 디버그를 참조하세요.

"서버를 자동으로 단계별 진입할 수 없습니다."라는 오류 메시지가 표시되면 문제를 해결하려면 Visual Studio 설치를 복구하십시오. 이 작업은 ASP.NET 설치하기 전에 Visual Studio를 설치하는 경우에 발생할 수 있습니다.