1

IISでホストされているWCFサービスを使用しています。
はまた、私は、ユーザーにいくつかのエラーを表示するようにT>「私はFaultException <をキャッチし、クライアント側では(T>
クライアントFaultException <)」にエラーを送信するために、障害の契約を使用しています。
WCFは、サーバ上で処理されない例外がスローされた場合、FaultException, を生成するので、クライアントはそれをキャッチしてユーザ「内部サーバエラー」メッセージを表示します。
エンタープライズライブラリがWCFでFaultExceptionをスローしない理由

は、それから私は、WCFの例外遮蔽するためのエンタープライズライブラリ5.0を使うようになった、と問題次会いました。 FaultContractExceptionHandlerを使用するすべてのエラーをクライアントに伝えることは可能ですが、未処理の例外クライアントがCommunicationException の代わりに FaultExceptionの代わりに受信します。他のすべては大丈夫です。

私は(ExceptionShieldingの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

これが表示されますエンタープライズライブラリの問題です。このworkitemを参照してください。

関連する問題