2012-10-24 3 views
3

.net 4.5와 함께 VS 2012의 Telerik OpenAccess에서 WCF Plain 서비스를 사용하려고합니다.WCF 처리되지 않은 FaultException이 사용자 코드에 의해 처리되지 않았습니다.

나는 telerik 개발자 설명서를 작성하고 서비스와 클라이언트를 만들었습니다. 소비자의 사용자 코드에서

public PersistentDto ReadPersistentDto(string dtoKey) 
{ 
    throw new FaultException("test"); 
} 

내가이를 넣어 : 나는 첫 번째 시도로 쉬운 구조를 사용하는 방법에 대한 EntitiesModel.SVC에서

[OperationContract] 
[FaultContract(typeof(string))] 
PersistentDto ReadPersistentDto(string dtoKey); 

을 넣어 IEntitiesModel 서비스 인터페이스에서

예외를 잡아라.

지금 문제는 다음과 같습니다

서비스가 정차, 비주얼 스튜디오 호출 될 때마다 오류 메시지와 함께 "새로운 오류 예외를 던져"오류 예외가 usercode에 의해 처리되지 않았다고. F5를 계속 사용하면 예외는 소비자의 사용자 코드에 의해 포착됩니다.

서비스가 중지되는 이유는 무엇입니까?

FaultException은 서비스 소비자에게 전달되어야하는 내용입니다.

FaultException을 올바르게 throw하려면 어떻게해야합니까?

+0

가 디버깅하는 동안 첫 번째 기회가 예외를 사용하도록 설정 "그냥 내 코드를 사용" ? 그렇다면 예외가 throw 된 모든 위치에서 디버거가 중지됩니다. –

답변

9

Debug -> Exceptions으로 이동하고 행 CLR exceptionThrown 열의 체크 박스를 선택 취소하십시오.

이 확인란을 선택하면 예외가 발생하는 모든 위치에서 디버거가 중지됩니다.

+1

이 답변을 주셔서 감사합니다 :) 내 Ierrorhandler 순서대로 모든것을 지금. didnt는 그것이 일했다라는 것을 알고있다. – Dendei

0

서버는 클라이언트가 예외를 처리한다는 것을 모릅니다 (어떻게해야합니까?). 이것이 디버거가 처리되지 않았다는 것을 알려주는 이유입니다.

은 또한 다음과 같은 오류가 발생했습니다 : 그것은 debbugging와 관련이

[FaultContract(typeof(string))] 
0

:

public PersistentDto ReadPersistentDto(string dtoKey) 
{ 
    throw new FaultException<string>("test"); 
} 

이것은 당신의 선언과 일치합니다. 그러나 실행 중에 서비스를 중지하지는 않습니다 (예외를 올바르게 관리하지 않는 한).

RV1987에서 VS에 CLR Exceptions가 활성화 된 경우 예외가 발생하면 언제든지 알려줍니다.

0

이것은 설정과 관련이 있습니다. 당신은 디버깅 메뉴로 지금 전환> 옵션을 도구 - 및
의 선택을 취소로 이동하여 필요한 설정을 할 수있다 "는 예외 도우미를 사용"
enter image description here

관련 문제