クライアント企業から .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 のステートメントをうまく処理していないようです。