2013-11-26 2 views
0

wcf 서비스 내에서 서비스 클라이언트에 메서드가 노출되었습니다. 이 메서드는 FaultContract 특성으로 장식되어 있으므로 사용자 지정 예외를 반환하고 catch 할 수 있습니다. 나는 사용자 지정 오류를 입력 WCF 서비스가 예외를 throw하지만 클라이언트가이를받지 못함

[FaultContract(typeof(BookServiceAuthorizeFault))] 
[OperationContract] 
IEnumerable<string> GetAllBookTitlesFromSpecificGenre(string genre); 

이 목적 던지는 예외

public IEnumerable<string> GetAllBookTitlesFromSpecificGenre(string genre) 
{ 
    throw new FaultException<BookServiceAuthorizeFault>(new BookServiceAuthorizeFault("Unauthorize access"));  
} 

마지막에에이 인터페이스 I를 구현

[DataContract] 
public sealed class BookServiceAuthorizeFault 
{ 
    private string _Message; 
    public BookServiceAuthorizeFault(string message) 
    { 
     _Message = message;   
    } 

    [DataMember] 
    public string Message 
    { 
     get { return _Message; } 
     set { _Message = value; } 
    } 
} 

Insude 서비스 내부에 싸여있다가 IBookService 내부

클라이언트 쪽이 예외를 catch하려면

catch (FaultException<BookServiceAuthorizeFault> bsaf) 
{ 
    MessageBox.Show(bsaf.Message); 
} 

하지만이 catch 블록은 hitted되지 않습니다, 나는 public IEnumerable<string> GetAllBookTitlesFromSpecificGenre(string genre)

내가 잘못 여기서 뭐하는거야에 서비스 측면 에서 사용자 처리되지 않은 예외가 받고 있어요?

답변

1

Visual Studio 내에서 디버깅 설정을 변경하면 솔루션이 예상대로 작동한다고합니다. >Options - ->Debugging -

Tools로 이동>General 및 "Enable the exception assistant"을 선택 취소합니다.

관련 문제