다음을 통해 공유


RIA Services 솔루션 배포 문제 해결

WCF RIA Services 솔루션 문제 해결은 여러 계층 중 하나에서 예외가 발생할 수 있으므로 고유한 과제를 안고 있습니다. 응용 프로그램 문제를 효과적으로 해결하기 위해서는 이러한 서로 다른 계층에서 오류를 보고하는 방식을 이해할 필요가 있습니다. 이 항목에서는 이러한 계층들에 대해 소개하고 예외가 발생했을 때 RIA Services 응용 프로그램 문제를 해결하기 위한 몇 가지 기술들에 대해 설명합니다. 또한 RIA Services 를 배포할 때 발생할 수 있는 여러 문제들은 새로운 배포 가이드에서 설명되어 있습니다. 자세한 내용은 RIA Services 솔루션 배포 가이드를 참조하십시오.

예외 흐름

RIA Services 응용 프로그램에서 예외 흐름은 가장 낮은 원래 계층에서 클라이언트로 다음과 같은 순서로 진행됩니다.

  1. 도메인 서비스

  2. RIA Services 서비스 호스트

  3. WCF

  4. ASP.NET

  5. IIS

  6. Silverlight 응용 프로그램

계층의 예외 흐름

자세한 ASP.NET 오류 정보 사용

기본적으로 Web.config 파일의 customErrors 요소는 RemoteOnly로 설정되어 있으므로 원격 클라이언트는 자세한 ASP.NET 오류 정보를 받을 수 없습니다. 응용 프로그램을 디버깅하려면 클라이언트에서 자세한 ASP.NET 오류를 확인할 수 있도록 customErrorsOff로 설정해야 합니다.

[!참고] 오류 메시지로 인해 사용자에게 민감한 정보가 노출될 수 있으므로 customErrorsOff로 설정하여 응용 프로그램을 공개적으로 제공하지 마십시오.

Fiddler를 사용하여 오류 검사

도메인 서비스 내부로부터 발생하는 모든 예외는 오류 상태 코드 200을 사용하여 Silverlight 클라이언트에 전송됩니다. WCF 레이어 또는 하위 레이어로부터 발생하는 모든 예외는 상태 코드 404를 사용하여 Silverlight 클라이언트에 전송됩니다. Fiddler HTTP 디버거를 실행하면 실제 오류를 볼 수 있습니다.

도메인 서비스 직접 찾아보기

도메인 서비스에 대한 .svc 파일을 직접 찾아보면 WCF 서비스를 사용할 수 있는지 확인하는 데 도움이 되는 경우가 많습니다. 하지만 .svc는 솔루션에 존재하지 않으므로 .svc 파일에 대한 경로를 확인하기가 쉽지 않습니다. 다음 패턴을 사용하여 웹 브라우저에서 도메인 서비스로 직접 이동할 수 있습니다.

http://[host]/[modified class name for domain service].svc

전체 클래스 이름을 사용하고 모든 점(.)을 대시(-)로 바꾸면 수정된 클래스 이름을 확인할 수 있습니다. 따라서 도메인 서비스 이름이 다음과 같은 경우

ExampleApplication.Web.CustomerDomainService

.svc 파일 이름은 다음과 같습니다.

ExampleApplication-Web-CustomerDomainService.svc

이 파일이 localhost에 호스팅되어 있으면 다음 위치로 이동하여 파일로 직접 이동할 수 있습니다.

https://localhost/ExampleApplication-Web-CustomerDomainService.svc

서비스를 사용할 수 있으면 서비스 정보와 서비스 테스트 방법이 포함된 웹 페이지가 표시됩니다. 서비스를 사용할 수 없으면 문제를 확인하는 데 도움이 되는 정보가 포함된 오류 페이지가 표시됩니다. 오류가 발생하면 RIA Services 서비스 호스트 계층에서 예외가 발생했을 수 있습니다.

도메인 서비스 OnError 메서드 재정의

DomainService 작업을 처리하는 동안 복구할 수 없는 오류가 발생하면 OnError 메서드가 호출됩니다. 클라이언트로 전송되기 전에 오류를 검사하도록 이 메서드를 재정의할 수 있습니다.

기존 WCF 추적 기술 사용

WCF 서비스에서 문제를 해결할 때와 같이 WCF 계층에서 예외에 대한 문제 해결을 진행합니다. WCF 서비스에 대한 진단 추적에 대한 자세한 내용은 추적을 참조하십시오.

WCF 계층에서 발생하는 예외는 Fiddler에 표시되지 않습니다. .svc 파일로 이동하여 서비스 예외 문제를 해결할 수 있습니다. 오류 없이 .svc 파일로 이동할 수 있지만 런타임에 서비스가 실패하면 WCF 계층에서 예외가 발생했을 수 있습니다.

ASP.NET 및 IIS 설정 확인

ASP.NET 및 IIS 레이어에서 발생한 예외의 경우 RIA Services 응용 프로그램에 대한 정보가 스택에 포함되지 않습니다. 다음과 같은 경우에는 이 수준에서 예외가 발생할 수 있습니다.

  • Web.config 파일에 사용자가 사용 중인 IIS 버전에 대한 올바른 HttpModule 요소가 없습니다.

  • 웹 서버에서 WCF가 활성화되지 않았습니다.