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 Development Server 내에서 실행되지 않는 WCF 서비스입니다.자체 호스팅 서비스를 디버깅하는 방법에 대한 자세한 내용은 방법: 자체 호스팅 WCF 서비스 디버깅을 참조하십시오.
자체 호스팅
ASP.NET 3.0 또는 3.5 응용 프로그램의 디버깅을 활성화하려면 Visual Studio 2010을 설치하기 전에 ASP.NET 3.0 또는 3.5를 설치해야 합니다.Visual Studio 2010이 ASP.NET 3.0 또는 3.5 이전에 설치된 경우 ASP.NET 3.0 또는 3.5 응용 프로그램을 디버깅하려고 하면 오류가 발생합니다.오류 메시지는 "서버에 대해 자동으로 한 단계씩 코드를 실행할 수 없습니다."입니다. 이 문제를 해결하려면 Windows 제어판, 프로그램 및 기능을 사용하여 Visual Studio 2010 설치를 복구합니다.