問題タブ [soapfault]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ASMX Web サービスからエラーを返す方法は?
私の Web サービス メソッドはコレクション オブジェクトを返します。C# Web サービスの仕組みのおかげで、これはうまくシリアル化されます。
しかし、コードがキャッチされない例外をスローした場合は、代わりにカスタム エラー オブジェクトを返したいと考えています。
これは C# ASP.NET v2 を使用して可能ですか?
例えば、
通常の操作は次のように戻ります。
しかし、私が欲しいエラーで
wcf - WCF EntLib Validation - デフォルトの SOAP Fault Reason テキストを変更します
WCF サービスにEnterprise Library Validation Application Blockを使用しています。すべて問題なく、.Net コンシューマーはFaultException<ValidationFault>
例外をキャッチして、人間が判読できるビジネス エラーのコレクションを取得できます。ただし、.Net 以外のコンシューマ、特に未加工の SOAP メッセージを表示するコンシューマにとっては、あまり見栄えがよくありません。SOAP 理由のテキストは常に "この障害の作成者は理由を指定しませんでした。 " これはあまり役に立ちません。以下の障害メッセージの例に示すように、要素の下に理由が指定されているためです。<Detail>
「この障害の作成者は理由を指定しませんでした。 」というテキストを「ValidationFault の詳細を参照してください」などのより役立つものに変更する方法はありますか?
wcf - WCF UserName 認証とフォルト コントラクト
System.IdentityModel.Selectors.UserNamePasswordValidator クラスのオーバーライドされた Validate() メソッドを介してカスタム UserName 検証を使用するように構成された WCF サービスがあります。
コントラクトのすべてのメソッドは、FaultContractAttribute で装飾されており、カスタム SOAP エラーが返されるように指定されています。
FaultException<T> (T は FaultContractAttribute で指定された型) をスローすると、すべてが期待どおりに動作し、応答 XML でカスタム エラーを取得します。
ただし、ユーザー名認証クラスのオーバーライドされた Validate() メソッドで FaultException<T> をスローしようとすると、次の理由で一般的な SOAP エラーが発生します。
「この障害の作成者は理由を特定しませんでした。」
ただし、次のように一般的な SOAP エラーをスローするようにコードを変更すると、次のようになります。
throw new FaultException("Authentication failed.");
少なくとも「認証に失敗しました」と表示されます。reason 要素で。
私の質問は次のとおりです。
- Validate() でスローされた場合、FaultException<T> 例外がサービス実装内にあるため、同じように扱われないのはなぜですか?
- Validate() メソッドでスローされた例外を、コントラクト メソッドで指定された FaultContractAttribute に準拠させることは可能ですか?
どんな助けでも大歓迎です。私自身の推測では、メッセージがコントラクトのメソッドに関連付けられる前に認証が行われるため、FaultContractAttribute には関連付けられませんが、これを確認して回避策を提供する記事は非常に役立ちます。
タリ
wcf - WCFサービスのコンストラクターは、エラー処理に障害を使用する必要がありますか?
wcfサービスがあります。サービス自体( ServiceContractを継承するクラス)には、例外をスローすることがあるコンストラクターがあります。サービスが失敗した場合にユーザーにメッセージを表示したいと思います。サービスメソッドの場合と同じように障害を使用する必要がありますか?
java - CXF: NoClassDefFoundError: SOAPFaultBuilder で Web サービス例外をキャッチする
私はApache CXF wsdl2javaで生成されたコードを使用してWebサービスからメソッドを呼び出してきましたが、これまでのところ問題なく動作しています..私が抱えている問題は、合法的に SOAP 例外をスローすると、CXF は次のエラー メッセージを表示します。
クラス com.sun.xml.internal.ws.fault.SOAPFaultBuilder を初期化できませんでした
Ubuntu 9.04、OpenJDK (IcedTea6 1.4.1) 6b14-1.1.1-0ubuntu11、Maven2、および CXF 2.2.3 を使用しています。私が使用しているコードとセットアップは自明に見えるので、私は現在、この問題を解決する方法について途方に暮れています..ここで正しい方向に私を向けることができる人はいますか? 詳細を投稿できるかどうか教えてください..
これは返される完全なスタック トレースです。
wsdl2java - Apache Axis WSDL2Java エラー - 欠落エレメント
アプリケーションにサードパーティの SOAP Web サービスを統合しています。WSDL は、サンプルの要求と応答が正常に機能する SOAPUI ツールで使用されます。
Apache Axis 1.3 と統合しようとすると、WSDL で WSDL2JAVA を試しました。次のエラーを受け取りました
java.io.IOException: エラー: org.apache.axis.wsdl.symbolTable.SymbolTable.faultsFromSOAPFault(SymbolTable.java:2858) のバインディング saveRegistration で、操作 "serviceFault" に要素 inFault "serviceFault" がありません.wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2549) org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744) org.apache.axis.wsdl.symbolTable.SymbolTable.add (SymbolTable.java:543) org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518) で org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495) でorg.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361) at java.lang.Thread.run(不明なソース)
すでにこの問題に直面して解決した人はいますか?
c# - php soap が soapFault を返したかどうかを C# で確認する
PHP Soap Web サービスの writen からの SoapFault 応答のチェックに問題があります。応答は次のようになります (デフォルトは "throw new SoapFault("SOAP:CLIENT", "Bad login");"
C# コードは次のようになります。
login/pass/apikey などは必要なものを取得するよりも問題ありませんが、sth が間違っている場合は適切な情報を表示できません。
SOAPがエラーを返したかどうかを確認する方法は? 問題をグーグルで検索しましたが、貴重な情報が見つかりませんでした。
残念ながら、Webサービスを変更することはできません。
助けてくれてありがとう。
web-services - SOAP 障害または結果オブジェクト?
これについて同僚と話し合っていたのですが、合意に達することができなかったので、あなたの考えを聞きたかったのです。私はこれについて私自身の意見を持っていますが、あなたのためにそれを台無しにするつもりはありません.
いつSOAP エラーを返す必要がありますか? また、エラー情報を含む結果オブジェクトを返す必要があるのはいつですか? これは、さまざまなシステム (.NET、Java など) で使用できる一般的な Web サービス用であると想定します。結果オブジェクトには、isError フラグ、errorType (特定の例外タイプに類似)、およびメッセージが含まれます。
考慮すべき点:
- データ検証エラーは障害ですか?
- フォールト (非常に例外的なケース) と結果オブジェクト (「予想される」エラー) の組み合わせが必要ですか?
- SOAP エラーをどのようにグループ化しますか (クリティカル [ヌル参照] と検証 [郵便番号が正しくありません])?
- フェイルファスト vs エラーチェックを忘れずに
- ベスト プラクティス、パターン、標準など
記事へのリンクは有効です。あなたの意見が欲しいように聞こえますが、事実に固執してください(x は y と z により優れています...)
asp.net - ASP.Net Web サービス - SOAP 1.1 と SOAP 1.2 の両方で動作する SOAP エラー応答に詳細要素を追加する正しい方法は何ですか?
ASP.Net 2.0 Web サービスは、SOAP 1.1 と SOAP 1.2 の両方のバインディングを自動的に作成します。ただし、Web サービスには SOAP 拡張機能とカスタム例外処理があり、SOAP 1.1 バインディングのみが使用されることを前提としています (たとえば、SOAP 拡張機能は HTTP SOAPAction ヘッダーを使用して動作を制御します)。
私は、これらの仮定を行うコードを修正し、SOAP 1.1 または SOAP 1.2 で適切に動作するようにしようとしています。SOAP エラーの要素の生成で少し問題が発生しています。
次の Web メソッドの実装を検討してください。
これを SOAP 1.1 経由で呼び出すと、次の結果が得られます。
SOAP 1.2 を介して呼び出すと、次の結果が得られます。
どちらの場合も、要素の子として空の詳細要素があります<soap:Fault>
が、修飾名が異なり、 または のいずれ<detail>
か<soap:Detail>
です。
ここで、detail 要素を使用して SOAPException を作成しようとする次のコードについて考えてみましょう。
SOAP 1.1 応答は次のとおりです。
SOAP 1.2 応答は次のとおりです。
SOAP 1.2 応答で、detail 要素の修飾名が正しくなくなりました。である必要がありますが、SOAP 1.1 応答と同じで<soap:Detail>
あるだけです。<detail>
ASP.Net 2.0 フレームワークは、SOAPException を SOAP バージョンに適した形式に変換するためにかなりの作業を行ったようですが、detail 要素を適切に処理することを怠っているようです。さらに、SoapException.DetailElementName プロパティで行われたように、detail 要素の正しい SOAP 1.2 修飾名を公開していないようです。
では、SOAP 1.1 と SOAP 1.2 の両方で機能する SOAP 障害応答に詳細要素を追加する正しい方法は何ですか? 自分で SOAP バージョンを検出し、detail 要素の SOAP 1.2 修飾名をハードコーディングする必要がありますか?