wsdl.exeの結果、“ SOAP 1.1バインディングが見つかりませんでした”

StackOverflow https://stackoverflow.com/questions/251079

  •  05-07-2019
  •  | 
  •  

質問

ASP.NET Unleashed (第1版)およびこのMSDN記事。ここまでは順調ですね!ただし、wsdl.exeを使用してクラスを生成すると、迷惑な警告が表示されます。

Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 2.0.50727.3038]
Copyright (C) Microsoft Corporation. All rights reserved.

Warning: This web reference does not conform to WS-I Basic Profile v1.1.
SOAP 1.1 binding was not found: WS-I's Basic Profile 1.1 consists of 
implementation guidelines that recommend how a set of core Web services
specifications should be used together to develop interoperable Web 
services. For the 1.1 Profile, those specifications are SOAP 1.1, 
WSDL 1.1, UDDI 2.0, XML 1.0 and XML Schema.

For more details on the WS-I Basic Profile v1.1, see the specification
at http://www.ws-i.org/Profiles/BasicProfile-1.1.html.

可能であれば、仕様に準拠したいと思います。 推奨ページを見て、w3にいくつかのページが見つかりました。 orgですが、準拠するために含める必要のあるxml要素の具体例は見つかりませんでした。

xmlを投稿する代わりに、wsdlはMSDN記事で使用されているものにほぼ準拠していると言います(ただし、" .dtd"を追加してw3.orgのXMLSchemaの無効なURLを修正しました)。

ありがとう!

役に立ちましたか?

解決

Wsdl.exe 実装するプロトコルとしてデフォルトで SOAP を使用し、その結果、基本プロファイルへの準拠を確認しようとします。とにかく、 wsdl.exe はこれを処理し、警告のみで続行します。 MSDN記事ファイルを確認すると、バインディングが HttpGet プロトコルを使用するように構成します。そのため、警告を抑制したい場合は、

を実行します
wsdl.exe /protocol:HttpGet <url or path> 

ただし、結果のプロキシクラスは前のものと同じです。

サイドノート:名前空間はURLとしてではなく識別子として使用されるため、名前空間を定義するURLを修正する必要はありません。多くの名前空間はURLのように見えますが、Web上の実際のリソースを指す必要はありません。名前空間 http://www.w3.org/2001/XMLSchema は、W3Cによって XMLスキーマの推奨事項

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top