0

NetDataContractSerializer を使用して、WCF 経由で例外をシリアル化しています。NHibernateADOException (クライアントには不明) が発生すると、FaultException が発生しました。残念ながら、これにより、内部例外メッセージが失われます。不明な例外 (またはその他の型) を指定された既知の型に逆シリアル化する方法はありますか、またはその問題を解決する方法は他にありますか?

4

2 に答える 2

0

includeExceptionDetailsInFaultsサービスの動作を true に設定したい。

この質問を参照してください:

プログラムでWCF IncludeExceptionDetailInFaults?

于 2013-01-02T23:11:34.183 に答える
0

これを web.config で設定して、例外を返すことができます。

<serviceDebug includeExceptionDetailInFaults="true"/>

このタグは、通常は次のように serviceBehavior タグ内に配置する必要があります。

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
</system.serviceModel> 

詳細情報の例:

サーバー スタック トレース: em System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作、ProxyRpc& rpc) em System.ServiceModel.Channels.ServiceChannel.Call(String アクション、Boolean oneway、ProxyOperationRuntime 操作、Object[] ins、Object[] outs 、TimeSpan タイムアウト) em System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime 操作) em System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage メッセージ)

[0] で再スローされる例外: em System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) em System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) em IMyService.GetDataOperation( RequestObterBeneficiario リクエスト) em MyServiceClient.GetDataOpration(RequestData リクエスト)

これにより、クライアントの詳細情報が返されます。開発中はこれが役立ちますが、サービスが本番環境に移行すると、サービスがデータベース名や構成などの機密データを送信できるため、これを保持しなくなります。

于 2016-08-26T16:40:47.493 に答える