1

IIS에서 호스팅되는 WCF 서비스를 사용합니다.
또한, 나는 사용자에게 몇 가지 오류를 보여 T> '나는 오류 예외 <를 잡을 클라이언트 측에서 (T>
클라이언트 오류 예외 <)'에 오류를 보낼 고장 계약을 사용합니다.
처리되지 않은 예외가 서버에서 throw되는 경우 WCF는 오류 메시지, 을 생성하므로 클라이언트가 "내부 서버 오류"메시지를 표시합니다.
왜 엔터프라이즈 라이브러리가 WCF에서 FaultException을 throw하지 않습니다.

그런 다음 WCF Exception Shielding 용으로 Enterprise Library 5.0을 사용하기 시작하여 다음 호를 만났습니다. FaultContractExceptionHandler 사용 모든 오류를 클라이언트에 전달할 수 있지만 처리되지 않은 예외 클라이언트의 경우 대신 CommunicationException을 수신합니다. FaultException. 다른 모든 것은 괜찮습니다.

예외 처리 정책 (ExceptShield attibute 제거)을 해제하면 클라이언트는 FaultExceptions을 예상대로 캐치합니다.
이유가 무엇인지 알고 계십니까?
감사합니다.

PS : 여기 내부 예외 체인이다
CommunicationException -> WebException이 -> IOException이 ->의 SocketException
메시지는 기본 연결이 종료되었다」이다 활성 상태로 유지 될 것으로 예상되었다 연결에 의해 폐쇄되었다 섬기는 사람."

의 Web.config

<add name="ServiceException Policy"> 
    <exceptionTypes> 
     <add name="ServiceLogicException" type="LopService.Contracts.ServiceLogicException, LopService.Contracts, Version=1.0.0.1725, Culture=neutral, PublicKeyToken=null" 
     postHandlingAction="ThrowNewException"> 
     <exceptionHandlers> 
      <add type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF.FaultContractExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      faultContractType="LopService.Contracts.ServiceLogicFaultContract, LopService.Contracts, Version=1.0.0.1725, Culture=neutral, PublicKeyToken=null" 
      name="Fault Contract Exception Handler" /> 
     </exceptionHandlers> 
     </add> 
    </exceptionTypes> 
    </add> 

서비스 클래스

[ExceptionShielding("ServiceException Policy")] 
public partial class LopSoapService 
{... 

운영 계약이

[OperationContract] 
    [FaultContract(typeof(DataValidationFaultContract))] 
    [FaultContract(typeof(ServiceLogicFaultContract))] 
    int CreateUser(UserDto userDto, IEnumerable<ClaimRecordDto> claimRecords); 

답변

0

이 나타납니다 Enterprise Library와 관련된 문제입니다. 이 workitem을 참조하십시오.