現在、サービス参照と生成された.NETクラスを使用して、AX内の外部SOAPサービスと通信しています。SOAP障害の処理方法を除いて、すべてがうまく機能しています。理想的には、これは発生しませんが、SOAPサーバー(私も制御します)が「コード」と「メッセージ」を含むSOAP障害をスローすることがあります。コードとそれぞれのメッセージの例:
- "INVALID_API_KEY"/"無効なAPIキーが使用されました。"
- "INVALID_CUSTOMER_ID" / "無効な顧客IDが渡されました(%d)"。
これらのエラーコードはWSDLで定義されているため、これらの障害がスローされた場合、サニタイズされたメッセージをユーザーに自然に返すことができます。残念ながら、X ++をドリルダウンして、どのSOAP障害がスローされたかを特定し、障害のサニタイズされた説明をユーザーに表示できるようにするのに問題があります。現在、私のコードは次のようになっています。
try
{
new InteropPermission(InteropKind::ClrInterop).assert();
// ... code making SOAP calls
CodeAccessPermission::revertAssert();
}
catch(Exception::CLRError)
{
warning(AifUtil::getClrErrorMessage());
}
これはSOAP障害を十分に処理し、生成されるエラーは次のとおりです。シリアル化可能としてマークされています。」
基本の.NETクラスをドリルダウンしようとしましたが、SOAPフォールト(クラスラダーのFaultException)を人間が読めるメッセージに変換するためのServiceModel(およびその後)の他のクラスが不明瞭になっています。
誰かが実際の障害コード/メッセージを取得するための最良の方法についての洞察を私に貸してくれますか?ありがとう!