5

クライアント企業から .WSDL ファイルを受け取りました。これを使用して Web サービスを呼び出す必要があります。彼らのシステムはSAP(SAP PI)です。私のアプリケーションは、VS 2008 で開発された C# .NET 3.5 クライアントです。提供された .WSDL ファイルを使用して、Visual Studio にサービス参照を追加しました。これにより、サービスを呼び出すために使用する参照クラスが作成され、app.config ファイルにいくつかのバインディングが設定されました。

app.config ファイルは何も変更していませんが、Web サービスを呼び出すコードを作成しました。ただし、Web サービスを呼び出すと、次の例外が発生します。

HTTP 要求は、クライアント認証スキーム「匿名」では許可されていません。サーバーから受信した認証ヘッダーは、'Basic realm="SAP NetWeaver Application Server ..."' でした。

(「基本領域」セクションで使用されている文字列を少し変更して、それを与えないようにしました。)

app.config は WSDL から正しく構築されませんでしたか? どうにか app.config ファイルを変更する必要がありますか?

私が試したこと:

  • app.config の authenticationScheme を Anonymous から Basic
    (および他のすべての認証タイプ)に変更しました。
  • 例外メッセージのレルムと一致するように app.config のレルム文字列を変更しました
  • コードの ClientCredentials.Username オブジェクトに username/pw フィールドを設定します

ポインタやヘルプをいただければ幸いです。

編集: さらに調査した結果、Visual Studio には、拡張要素のポリシーとポリシー アサーションに関するいくつかの警告があることがわかりました。

  • カスタム ツールの警告: 名前空間 'http://schemas.xmlsoap.org/ws/2004/09/policy' のオプションの WSDL 拡張要素 'Policy' は処理されませんでした。
  • カスタム ツールの警告: 次のポリシー アサーションはインポートされませんでした:
    XPath://wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:binding[@name='Binding_FieldValidation' ] アサーション: ...

これが認証方式に関する現在の問題に関連しているかどうかを確認できませんでした。関連しているようですが、これらのポリシー警告を解決するための解決策を見つけることができませんでした. WCF は wsdl のステートメントをうまく処理していないようです。

4

3 に答える 3

0

基本認証ヘッダーが欠落しているか、資格情報に問題があるはずです。

サービスが SOAP アダプタを介して公開されている場合、SAP PI は常にデフォルトで基本認証を使用します。WCF が本当にそのヘッダーを送信するかどうかを調査します (たとえば、クライアント エンドポイントを TCP ゲートウェイにポイントし、TCP ゲートウェイが WSDL から SAP PI エンドポイントをポイントするようにします)。

警告について: 私の知る限り、SAP PI によって生成された WSDL には常にこれらのポリシー タグが含まれており、実際には省略することはできません。できることは、実際には検証されていないため、単純に破棄することです

于 2015-07-18T08:44:05.667 に答える
0

ほとんどの SAP サービスは匿名をサポートしていません。そのため、呼び出しで何らかの形式の認証データを渡します。ユーザーとパスワード / X.509 チケット...

呼び出しで認証データを送信している場合は、これを試してください

SAP 担当者に、SAP アサーションなし、ポリシーなし、SOAP 1.1 で WSDL を再生成するように依頼します。また、手動で WSDL を編集して余分なガフを削除することもできます...

于 2015-04-25T23:42:13.767 に答える
0

出発点として、提供されたユーザー名とパスワードを使用してサービスを正常に呼び出すことができることを確認します。SoapUIなどを使用して、すべてが正しく機能することをテストします。新しいプロジェクトを作成し、SAP PI が提供する WSDL をインポートし、ユーザー名とパスワードを設定して呼び出しを実行するだけです。空のペイロードで何らかの例外が発生する可能性がありますが、少なくともユーザー名とパスワードが正しいことを確認できます。

動作していることを確認したら、アプリケーションがサービスを正しく呼び出していること、および http 基本認証ヘッダーが送信されていることを確認します。これは、ネットワーク監視ツールを使用して、http 要求が正しく生成されていることを確認することで確認できます。Windows 用の netcat のようなもので実行できます。ローカル マシンのポートをリッスンし、localhost とそのポートを SOAP エンドポイントとして指定するだけです。

両方が正しいことを確認したら、呼び出しは成功するはずです。

于 2015-07-02T12:05:34.370 に答える