6

私は、プロバイダーのWSの1つを消費しようとしたときに発生するエラーについて、プロバイダーにさらに多くの情報を提供しようとしています。

彼らは私に次のコマンドを実行するためにwsdl.exeを使用するように頼みました:

wsdl.exe / l:CS / protocol:SOAP / verbose / sharetypes https:example.com/?wsdl

私はそれを行い、次のようになりました:エラー:エラー処理' https://example.oom?wsdl 'がありました。-「 https://example.com?wsdl 」のダウンロード中にエラーが発生しました。-要求は中止されました:SSL/TLSのセキュリティで保護されたチャネルを作成できませんでした。

「 https://example.com?wsdl 」をナビゲートするための証明書があり、正しくインストールされていると思います。IEでそのURLにアクセスしようとすると、リストから証明書を選択して特定のアクセス許可を与えるだけで済みます。次に、wsdlが表示されます。WSプロバイダーに、コマンド「usessl。Usethiscert」をどのように伝えることができるかを教えてもらいました。彼らは私のネットワーキングチームに尋ねるように言ったが、私はそのようなことを持っていないので、私はグーグルに尋ねた、そして私は見つけた:1)SSL / TLSを有効にする(それが意味するなら:IE>インターネットオプション>詳細> SSL / TLS有効にした、私はそれをしました)そして2)証明書がインストールされて利用可能であることを確認します。そうだと思います。

誰か私に何ができるか教えてもらえますか?証明書がインストールされているのに、コマンドがそれに到達できないのはどうしてですか?

4

2 に答える 2

8

そのWebページに移動するには、クライアント側の証明書を提供する必要があると言っていますか?その場合、wsdl.exeツールを直接使用して接続できるかどうかはわかりません。

しかし、そうする必要はありません。WSDLをIEにロードし、XMLとして保存してwsdl.exeから、ファイルのローカルコピーをポイントします。出力の唯一の違いは、プロキシクラスに埋め込まれたデフォルトのエンドポイントアドレスです。とにかく実行時にその値を設定する必要がありますが、自動生成されたC#コードをいつでも編集して修正することができます。実際のサービスとデータの契約および実装コードはまったく同じになります。

注意点:このWSDLがWCFによって作成されている場合は、追加の作業が必要になります。WCFはフェデレーションWSDL定義を生成します。多くの場合、WSDL定義全体を構成する6つ以上の個別のXSDファイルがあります。通常、接続関連の情報は1つのファイルにありますが、タイプ情報は次のようなタグを使用して別の場所から取得されます。

<wsdl:types>
  <xsd:schema targetNamespace="foo">
    <xsd:import schemaLocation="https://localhost/Foo.svc?xsd=xsd0" namespace="foo"/>
    <xsd:import schemaLocation="https://localhost/Foo.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
    <xsd:import schemaLocation="https://localhost/Foo.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/Foo.Model"/>
    <xsd:import schemaLocation="https://localhost/Foo.svc?xsd=xsd3" namespace="http://schemas.datacontract.org/2004/07/System.Collections.ObjectModel"/>
  </xsd:schema>
</wsdl:types>

それが本当なら、必要なWSDLを取得するために2つのことをする必要があります:

  1. 参照されているすべてのファイルをダウンロードします。これらは、他のXMLファイル内にある<?include>ディレクティブまたはタグのいずれかであり、2番目のXMLファイルをプルします。<wsdl:import>多くの場合、第2レベルと第3レベルのインポートがあるため、新しいファイルをそれぞれチェックする必要があります。すべてを1つのフォルダに入れます。
  2. これらすべての参照を編集してURLを削除し、ローカルファイル参照のみを使用します。

それが完了したら、正常にwsdl.exe実行されるはずです。(.NET 4.5には、WSDLファイルを動的にフラット化するための組み込みサポートがありますが、それまでは手動で行う必要があります。)

于 2012-06-21T16:21:57.827 に答える
3

wsdlをブラウザにダウンロードしてファイルに保存してから、ローカルファイルでwsdl.exeを使用します。

于 2012-06-21T16:21:28.327 に答える