soap-errorswcfsapsoapaction

The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher

SOAPless Team3 min read

このエラーは、receiver 側が request 自体は受け取ったものの、期待する contract に結び付けられなかった時に出やすいです。

The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher.

WCF 系のサービスや、その背後で .NET / WCF 系 endpoint と通信している SAP 連携でよく見ます。

ありがちな原因

代表的なのは次です。

  • SOAPAction が欠けている、または空
  • binding に合っていない endpoint を叩いている
  • SOAP version を取り違えている
  • security / transport の前提がずれている
  • WSDL の operation/action と実際の request が一致していない

Action '' が重要な理由

エラー内で Action '' と出ているなら、最初に見るべきは outgoing request に期待された SOAPAction が本当に入っているかです。SOAP 1.1 なら header、SOAP 1.2 なら application/soap+xmlaction parameter を確認します。

SAP Community でも、このエラーの実態が「送るべき action が request に入っていない」ケースはかなり見られます。

最初に確認したいこと

  1. endpoint URL が正しいか
  2. SOAP version が合っているか
  3. outgoing SOAPAction が本当に付いているか
  4. WSDL binding が document/literal か、それ以外の癖があるか
  5. test と production で auth / transport 条件がずれていないか

なぜこれを下流へ配らない方がいいのか

この種の fault は、downstream team が何度も自力で考えるべきものではありません。

consumer ごとに binding mismatch や action header の有無をデバッグしている時点で、表向きは扱いやすい API を出していても、実態はまだ SOAP の複雑さを押し付けています。

managed な integration layer を置く意味は、こうした action mapping と request 生成を1か所に閉じ込められることです。