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를 설치하는 경우에 발생할 수 있습니다.