2011-04-23 4 views
14

아시다시피 예외 세부 사항을 숨기려면 표준 WCF 서비스에서 FaultException을 사용하는 예외 처리를 권장합니다. 괜찮아요.하지만 WCF Ria 서비스에 문제가 있습니다. 도메인 서비스에서 예외를 throw하고 클라이언트가 해당 예외를 처리합니다. 스택 추적, 메서드 이름 등 예외의 중요한 정보를 공개하고 싶지 않습니다. 표준 WCF 서비스라면 FaultException 예외를 사용하지만 Ria 서비스에서는 작동하지 않습니다. 어떤 종류의 예외가 도메인 서비스에서 발생하더라도 클라이언트는 항상 DomainOperationException을 가져옵니다. 실제 예외 정보를 공개하지 않기 위해 도메인 서비스에서 Silverlight 클라이언트로 FaultException을 던질 수있는 방법이 있습니까? 예를 들어 로그인 창이 있습니다.RIA 서비스에서의 예외 처리

  • 사용자 계정이
  • 잠겨
  • 잘못된 사용자 이름이나 암호 계정이 활성화되지
: 사용자 히트의 로그인 버튼과 같은 몇 가지 검증 실패가 있어야하는 경우

나는 발생할 수있는 각 오류에 대해 오류 유형을 원합니다. 클라이언트는 무엇이 잘못되었는지 확인하고 그에 따라 오류 메시지를 표시해야합니다. customErrors를 비활성화했지만 도움이되지 않았습니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다.

+0

매우 흥미로운 질문, 난 답변을 기대! – flayn

+1

나도 너 ... : (이 질문에 따라 http://forums.silverlight.net/forums/t/226768.aspx <- here too – Davita

답변

11

여기 콜린 블레어 내 질문에 대답 무엇 here

DomainService가 재정의 방법라는 이름의 OnError 있습니다. 거기에있는 경우 은 도메인 서비스 자체 ( WCF 코드 제외) 내의 예외 일 때마다 WCF 코드로 예외가 전달되어 으로 다시 전송되기 전에 예외가 이 OnError로 전달됩니다. DomainServiceErrorInfo의 예외를 자신의 예외 을 사용하여 OnError 메서드로 바꾼 경우 예외가 클라이언트로 다시 전송됩니다. 예외에 대해 DomainException을 사용하는 경우 실제 오류를 확인하기 위해 클라이언트 측을 사용할 수있는 ErrorCode 정수를 전달할 수 있습니다.

내 질문에 대한 답변입니다. 고맙다 콜린.

+1

새 링크는 http://social.msdn.microsoft입니다. .com/Forums/en-US/silverlightwcf/thread/f6fc6e4e-f81d-4988-956d-98a81862335c / –

0

코드 예제 :

[EnableClientAccess()] 
public class YourDomainService : DomainService 
{ 
    protected override void OnError(DomainServiceErrorInfo errorInfo) 
    { 
      base.OnError(errorInfo); 

      customErrorHandler(errorInfo.Error); 
    } 

    private void customErrorHandler(Exception ex) 
    { 
      DomainServiceContext sc = this.ServiceContext; 

      //Write here your custom logic handling exceptions 
    } 
}