問題タブ [mtom]
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.
wcf - Apache CXF(MTOM + WS-Security)からのWCFWebサービスへのアクセス
私はかなり長い間この問題に苦しんでいて、至る所を見回しているにもかかわらず、まだそれを解決することができていません。
シナリオの詳細(コード、構成、その他のものは最後に掲載されています):
- WCF Webサービス(.NET 4)、2つのエンドポイントを公開します。1つはセキュリティで保護されておらず、もう1つはメッセージセキュリティとユーザー名認証(メンバーシップインフラストラクチャを使用)を使用してセキュリティで保護されています-トランスポートセキュリティはありません。
- 両方のエンドポイントはMTOMエンコーディングを使用します。WSDLによって参照されるすべてのクラスは、MessageContract属性でマークされ、メンバーはMessageBodyMember属性でマークされます。
- WCFバインディングの構成では、「establishSecurityContext」と「negotiateServiceCredential」がfalseに設定されています。
- 暗号化の目的で自己署名証明書で保護されたWCFサービス。
- ApacheCXF2.5.1を使用してJavaクライアントからアクセスを試みています。クラスパスからアクセス可能なKeyStoreに証明書を設定しました。
結果:
- .NETクライアントからのWebサービスへのアクセスは正常に機能します
- Apache CXFからセキュリティで保護されていないエンドポイントにアクセスすることは、MTOMエンコーディングの有無にかかわらず正常に機能します。
- Apache CXFから(MTOMなしで)保護されたエンドポイントにアクセスすることは正常に機能します。CXFトレースは、暗号化/復号化プロセスが正常に実行されていることを示しています。
- MTOMがWCFでアクティブ化されると、問題が発生しました。WCF側では、メッセージの受信、メッセージの処理、応答の生成/暗号化が正常に行われていることがわかりました。
- 問題が発生するのは、CXFでメッセージを受信しているときです。メッセージを復号化しようとする前に、CXFがMTOM添付ファイルを適切に逆シリアル化していないように見えます。したがって、復号化ロジックは、メッセージにまだ応答で復号化する要素があることを検出しますが、復号化する空の要素を検出して失敗します。添付ファイルを初期化するためにRECEIVEフェーズインターセプターを追加しようとしましたが、役に立ちませんでした(マルチパート応答で境界マーカーを見つけようとして失敗しました)。
- Fiddlerを使用すると、応答が適切に形成され、添付ファイルが参照されていることがわかりました。
CODE / CONFIG / STUFF:
Web.Config(わかりやすくするために短縮):
Javaクライアントコード(わかりやすくするために一部を省略):
エラートレース(復号化フェーズのみ):
ご覧のとおり、CxFが添付ファイルを参照する要素をデコードしようとすると、その内容が空であることがわかり、失敗するように見えます。
どんな助けでも深く感謝されます。
サイズの制約のため、WSDLを投稿できませんでした。必要に応じてリクエストに応じて利用できます。
よろしく、
エドゥアルド・キロス-カンポス
web-services - RAD 7.5 で JAX-WS Web サービスを生成中にエラーが発生しました
RAD7.5 サービス生成ユーティリティを使用して Web サービスを生成しようとしています。
サービスクラスのアノテーションを次のように使用しています
およびWebサービスメソッドで
WSDL ファイルを使用して Web サービスをプロジェクトと Web サービス デプロイメント記述子に生成したい
プロジェクトのチェック ボックスに WSDL ファイルを選択しているときに、次のエラーが発生します。
どんな助けも非常に高く評価されます
java - CXF Webservice MTOM でファイルを送信できない
大きなファイルを送信したいWebサービスがあります。ファイルが 50 MB 未満の場合に機能します。何が間違っているのか誰にもわかりませんか?
データハンドラオブジェクトは次のようになります
Datahandlerobject を作成する関数は次のとおりです。
クライアント部分は次のとおりです。
クライアント側で実行すると、次のエラーが発生します。
c# - MTOMを使用して50MgのファイルをアップロードするWCF
WCF を使用して 50MG ファイルをアップロードする最良の方法は何ですか?
MTOMが自動的に処理してくれると思っていました。
私が間違っていたと思います...
LocalHost で実行していても例外が発生します
(外部 IIS を使用するのはさらに悪いと思います)。
例外メッセージ:
「 http://localhost:7064/DataSyncService.svcへの HTTP 応答を受信中にエラーが発生しました 。これは、サービス エンドポイント バインディングが HTTP プロトコルを使用していないことが原因である可能性があります。これは、HTTP 要求コンテキストが中止されたことが原因である可能性もあります。 (おそらくサービスのシャットダウンが原因です。詳細については、サーバー ログを参照してください。)
サーバー構成:
クライアント構成:
ありがとうございます。
cxf - Apache CXF 2.5.2 で MTOM を使用するとスキーマ検証が失敗する
Apache CXF 2.5.2 を使用して Web サービスを作成しています。エンドポイントを作成し、以下を使用して mtom とスキーマの検証を有効にしました。
プロパティをオフにするとmtom-enabled
、スキーマは正しく検証されます。プロパティをオフにするとschema-validation-enabled
、mtom は正しく機能します。
私のスキーマは次のようになります。
私の Base64Binary クラスは次のようになります。
スキーマ検証を有効にすると、次のエラーが発生します。
この検証エラーを回避する方法について何か考えはありますか?
ありがとうございました。
cxf - Apache CXF 2.5.2 でのみインバウンドまたはアウトバウンド xml のスキーマ検証を有効にすることはできますか?
Apache CXF 2.5.2 を使用して Web サービス エンドポイントを作成しましたが、スキーマの検証と MTOM の相互作用に問題があります。MTOM とスキーマの検証を有効にする場合、base64Binary 型を直接使用する必要がありますが、MTOM フィールドにも「contentType」属性がある固定仕様に準拠しようとしています。
受信メッセージまたは送信メッセージのスキーマ検証のみを有効にすることはできますか? たとえば、次のようなものです。
または、送信メッセージの検証をオーバーライドするなど、これを実現する別の方法はありますか?
ありがとう。
axis2 - AXIS クライアントと AXIS2 サービス
AXIS2 1.4 メソッドを使用する AXIS 1.4 クライアントを実装する必要があります。AXIS 1.4 クライアントは、スタブを作成することによって作成されます。クライアントはリクエストを送信し、何らかの添付ファイル (MTOM) を含むサービスからレスポンスを返します。AXIS 1.4 ポート タイプ オブジェクトでメソッド (操作) を呼び出すと、次のエラーが発生しました。
org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
MTOM が AXIS を台無しにしたと思います。ここで質問があります。AXIS2 1.4 (MTOM) Web サービスから返された添付ファイルをどのように取得したのでしょうか? ティア。
フランチェスコ
PS: これがコードです。WSDL によって生成されるスタブがあります。問題は、ポートのスタブ メソッドを呼び出すと例外が発生することです。戻ってきたメッセージには添付ファイルがあります。
返されるメッセージには
内部のタグ、それはMTOMです(私が推測する例外が発生します)。お役に立てれば。
wcf - WCF-MTOMでエンコードされたメッセージBeforeSendRequestを検査します
メッセージエンコーディングとしてMtomを使用しているサードパーティのWCFサービスと統合しています。メッセージインスペクターの動作を作成しました。を呼び出すことでメッセージリクエストの「文字列」を表示できますがrequest.ToString()
、メッセージがmtomでエンコードされているようには見えず、MIME部分が含まれていません。Mtomエンコーディングはチャネルパイプラインの後半で発生すると想定しています。私の質問は、WCFサービスにネットワーク経由で送信されるため、エンコードに関係なく実際の送信メッセージを表示する方法はありますか?
以下は、私が使用しているメッセージインスペクターです。
wcf - ReaderQuotasをサポートするWCFのカスタムメッセージエンコーダー
ここで答えが見つかりました(最後の投稿):http ://social.msdn.microsoft.com/Forums/eu/wcf/thread/f5c0ea22-1d45-484e-b2c0-e3bc9de20915
カスタム(TextOrMtomEncoder)の実装に関する最後の問題が1つあります。これは、ReaderQuotasの実装です。
私はウェブをたくさん検索しましたが、パズルの最後のピースを理解することができません。
'BindingElementExtensionElement'と'MessageEncodingBindingElement'の実装を含むクラスがあります。
MessageEncodingBindingElement実装には、次のオーバーライドが含まれています。
これは、TextMessageEncodingのようなデフォルトの.NETMessageEncoding実装から「借用」しました。
MSDNがそう言っているので、これは正しい実装でなければなりません。
構成はweb.configから正常に読み込まれ、両方のクラスのReaderQuotasプロパティが正しく設定されていることがわかりますが、.NETがMessageEncodingBindingElement実装からReaderQuotas構成を読み取っていないようです。
私の推測では、MessageVersionはこのメソッドを介して要求されるため、.NETはGetPropertyメソッドを使用して構成をロードします。ただし、問題は、TがXmlDictionaryReaderQuotasと等しくなることはないため、ReaderQuotasが要求され始めることはないということです。
私の質問の根本は奇妙なことです。私はIIS7.5を搭載したWindows7x64マシンで開発しています。「大きな」ファイル(100 KBなど)の投稿は私のマシンで機能します。しかし、サービスをWindows Server 2008 R2に展開すると(2つの異なるサーバーを試した)、次のエラーが発生します。
フォーマッタは、メッセージを逆シリアル化しようとしたときに例外をスローしました。パラメータ http://socialproxy.infocaster.net:argumentを逆シリアル化しようとしたときにエラーが発生しました。InnerExceptionメッセージは次のとおりです。'タイプSystem.Objectのオブジェクトの逆シリアル化中にエラーが発生しました。XMLデータの読み取り中に、配列の最大長のクォータ(16384)を超えました。このクォータは、XMLリーダーの作成時に使用されるXmlDictionaryReaderQuotasオブジェクトのMaxArrayLengthプロパティを変更することで増やすことができます。1行目、1584の位置。詳細については、InnerExceptionを参照してください。
そして、私が言ったように、それは私のマシンで動作します:-/
誰かが私がこれを解決する方法を教えてもらえますか?
よろしくお願いします!
WCFサービス構成: