2014-12-22 1 views
0

을 볼 수 없습니다. 질문 제목에서 WCF를 처음 사용한다고 생각할 수 있습니다. 이 웹 서비스를 구현했고 메서드 중 하나에서 사용자 지정 FaultException을 throw합니다.WCF 클라이언트는 사용자 정의 오류 예외

namespace Feed 
{ 
    [ServiceContract] 
    public interface IMyClass 
    { 
     [OperationContract] 
     [FaultContract(typeof(CustomError))] 
     DataSet MyMethod(int A, int T); 
    } 
    [DataContract] 
    public class CustomError 
    { 
     public CustomError(string msg, int code, int id) 
     { 
      Id = id; 
      ErrorMessage = msg; 
      ErrorCode = code; 
     } 
     [DataMember] 
     [DataMember] 
     public string ErrorMessage 
     { 
      get; 
      set; 
     } 

     [DataMember] 
     public int ErrorCode 
     { 
      get; 
      set; 
     } 

     [DataMember] 
     public int Id 
     { 
      get; 
      set; 
     } 
    } 
} 

그런 다음, 나는 지금까지

namespace Feeds 
{ 
    public class MyClass : IMyClass 
    { 
     DataSet MyMethod(int A, int T) 
     { 
      try 
      { 
       //todo 
       DataSet ds = new DataSet(); 
       return ds; 
      } 
      catch (Exception ex) 
      { 
       throw new FaultException<CustomError>(new CustomError("a", 1, 0)); 
      } 
     } 
    } 
} 

너무 좋아 MyMethod라는

의 구현에 적절한 예외를 throw합니다. 이제이 웹 서비스를 사용하는 간단한 ASP.NET 웹 사이트를 만들었습니다. MyClass.svc 웹 서비스에 대한 웹 사이트에 WebReference를 추가했습니다. 문제는 내가 예외를 잡으려고 할 때 : catch (FaultException ex) { } CustomError를 인식 할 수 없습니다. 다음과 같은 문제 해결을 수행했습니다 : 1. wsdl을 업데이트했는지 확인하십시오. (많은 시간을 할애하고 다른 것들을 변경했습니다. 모든 것이 클라이언트 측에 반영되었습니다) 2. WishHttpBinding뿐 아니라 BasicHttpBinding을 시도했습니다. 차이점) 3. Google 검색 및 MSDN의 샘플 코드를 종교적으로 따랐습니다.

아직 운! 내가 놓친 게 있니? 어떤 제안이라도 대단히 감사하겠습니다.

+0

구성 파일에서 [returnUnknownExceptionsAsFaults] 속성을 true로 설정하여 오류 세부 정보를 얻을 수 있습니다. –

답변

1

문제가 무엇인지 알아 냈습니다.
내 ASP.NET 웹 사이트는 .NET Framework 2.0 (VS 2010이 기본적으로하는 기능)에 있었으며 프로젝트를 마우스 오른쪽 단추로 클릭하고 "웹 참조 추가 ..."를 선택하여 웹 서비스에 대한 참조를 추가했습니다.
그러나 무엇을해야하는지, "Add Service Reference .."를 선택하여 웹 서비스를 서비스 참조로 추가하십시오. .NET 2.0은 서비스 레퍼런스를 지원하지 않기 때문에 닷넷 프레임 워크를 3.5로 업그레이드하고 서비스 레퍼런스를 추가해야만했습니다. This post 전구를 내 마음에 비췄다. 이 모든 노력에 감사드립니다.

0
[FaultContract(typeof(CustomError))] 

MyMethod(); 
+0

안녕하세요 Edis, 컴파일되지 않습니다. 반환 유형이 있어야합니다. – Waqas

+0

메서드에서 DataSet 유형을 반환해야합니다. – Edis

+0

내가 무엇을 놓치고 있는지 확실하지 않습니다. 위에서 언급 한 코드에서 DataSet을 반환하고 있습니다. 구현과 인터페이스에서 마찬가지입니다. – Waqas