Webサービスに接続していますが、戻ってくる障害メッセージはデシリアライズしていません。 makeは正しくデシリアライズします。私たちは物事のサーバー側を制御することはできません。サーバーはディスカバリーを許可しないため、エンドポイントのURLの最後に?WSDLを追加すると、WSDLではなくエラーが発生します。FaultExceptionデシリアライゼーションが失敗する原因となるSOAPエラーメッセージの複数の名前空間
[フィドラー] [1]戻ってくる障害メッセージがどのように見える示しています。私たちは最初から書いてきた私たちはコードを含む(しようとXsd.exeでは、svcutilなどを作った
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:eGov="http://eGov.gov" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>Client</faultcode>
<faultstring/>
<detail>
<eGov:eGov2Exception>
<eGov:ErrorClassification>SOME_ERROR</eGov:ErrorClassification>
<eGov:ErrorCode>SOME_ERROR_CODE</eGov:ErrorCode>
<eGov:ErrorMessage>Your request was unsuccessful. blah blah blah.</eGov:ErrorMessage>
</eGov:eGov2Exception>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
まだクラス我々がそれをキャッチしようとすると)、それをデシリアライズすることができます
catch (FaultException<eGov2ExceptionType> exp)
{
// Never stops here.
}
catch (FaultException<AllOtherAttemptedClasses> exp)
{
// Never stops here.
}
catch (SoapException se)
{
// Never stops here.
}
catch (FaultException exp)
{
//Always gets caught here.
}
のみベースFaultExceptionキャッチは、私たちがFaultMessageの内容が送信されて失うことを意味し、呼び出されます。私が書いたクラスの中には、上記のサンプルに本当に密接に連動するものがありますが、逆シリアル化に失敗するので、ネームスペースの問題があるとの疑いがあります。
質問:
1 - これはどのように書きますか?
2 - これはWCFで一般的なエラー/問題ですか?
[1]:シリアル化が完全に失敗している場合にこれを処理するhttp://www.fiddler2.com/fiddler2/フィドラー
可能性のあるものhttp://stackoverflow.com/questions/4140030/c-sharp-wcf-catch-fault-exceptions-of-base-type http:// stackoverflow。com/questions/9463802/wcf-custom-fault-exception-not-caught-in-client – Ruskin