1

WCF RIA Services VS2008/.NET 3.5를 사용하고 예외 처리를 시도하고 있습니다. DomainService의 OnError 메서드를 재정의하고 해당 메서드에서 예외 처리를 수행했습니다. 나는 비즈니스 규칙 예외 또는 데이터베이스 예외를 어떤 형태로 클라이언트에 던져서 클라이언트가이를 인식하고 다르게 처리하도록 노력하고 있습니다. 문제는 클라이언트가 항상 DomainServiceException을 수신하고 작업 이름을 보여주는 첫 번째 줄의 원래 오류 메시지가 실패했기 때문입니다. 따라서 클라이언트 측에서 예외 유형을 식별 할 수있는 방법이 없습니다. 다음과 같이 OnError에서 특정 종류의 예외에 특별한 문자열을 추가하려고 시도했습니다.WCF RIA 서비스 비즈니스 규칙/데이터베이스 예외 처리

/// <summary> 
    /// Exception handling and logging on error 
    /// </summary> 
    /// <param name="errorInfo"></param> 
    protected override void OnError(DomainServiceErrorInfo errorInfo) 
    { 
     Exception exceptionToLog = null; 
     //if exception is business rule exception then log only if there's an inner exception 
     if (errorInfo.Error.GetType() == typeof(BusinessRuleException)) 
     { 
      if (errorInfo.Error.InnerException != null) 
      { 
       exceptionToLog = errorInfo.Error; 
      } 
      //send the business rule exception to client 
      base.OnError(new DomainServiceErrorInfo(new DomainException("BRE:" + errorInfo.Error.Message))); 
     } 
     else 
     { 
      exceptionToLog = errorInfo.Error; 
      //if its some other server error then send only generic message. 
      base.OnError(new DomainServiceErrorInfo(new DomainException(ValidationErrorResources.MSG_GenericServerError))); 
     } 

     if (exceptionToLog != null) 
     { 
      //log exception 
      EntLibHelper.LogError(exceptionToLog); 
     } 
    } 

그러나이 트릭이 작동하지 않는 것 같습니다. 일부 추가 정보를 첨부 할 수있는 방법이 있습니까? 예외는 서버에서 클라이언트로 보내는 것입니다. 제안 해주세요.

답변

0

RTM 업데이트에서 클라이언트에 다시 보내려는 DomainServiceErrorInfo에 Error 속성을 설정할 수 있습니다. 이때 DomainException 인스턴스로 설정할 수 있습니다.

OnError에서 새 DomainException을 던져서 비슷한 동작을 얻지 만, 해로운 해결 방법이 될 수 있습니다 (작동한다고 가정).

+0

가까운 장래에 .Net 4.0으로 업그레이드 할 수없는 사용자에게는 실망입니다. –