137

私は何年にもわたってWebサービスを作成および利用しており、常にVisualStudioを使用してクライアントからサービス参照を作成することができました。連携する必要のあるサードパーティのサービスがありますが、wsdlを確認してサービスを参照できるように、セキュリティを開くことを拒否しています。これは公開サービスであるため、そのレベルのセキュリティの必要性はわかりませんが、それが何であるかです。

これはn00bの質問であり、質問するのは恥ずかしいことですが、クライアントからメールで送信されたwsdlの物理的なコピーしか利用できない場合、クライアントで同等のサービス参照情報を作成するにはどうすればよいですか?web.configの変更、SOAPデータ上のオブジェクトレイヤーなど。自動化されたサービスリファレンスの場合と同様に、サービスへの接続を開き、定義されたオブジェクトでの使用を開始します。

サードパーティのサービスは、私が知る限りWCFではなく、SOAPです。私はVS2010btwを使用しています。よろしくお願いします、ケン

4

3 に答える 3

198

これが一番簡単な方法かもしれません

  • プロジェクトを右クリックし、[サービス参照の追加...] を選択します。
  • [アドレス:] ボックスに、ダウンロード/変更された wsdl の物理パス (C:\test\project....) を入力します。
  • ヒットゴー
于 2012-10-04T16:07:32.310 に答える
85

これには 2 つの方法があります。IDE を使用して WSDL を生成するか、コマンド ラインから生成できます。

1. IDE を使用して作成するには:

ソリューション エクスプローラー ペインで、サービスを追加するプロジェクトを右クリックします。

ここに画像の説明を入力

次に、サービスの WSDL へのパスを入力して [go] をクリックします。

ここに画像の説明を入力

2. コマンドラインから作成するには:

VS 2010 コマンド プロンプトを開きます ([プログラム] -> [Visual Studio 2010] -> [Visual Studio ツール])

WSDL /verbose C:\path\to\wsdl

WSDL.exe は、使用する .cs ファイルを出力します。

xsd など、ファイルと共に受け取った他の依存関係がある場合は、それらを引数リストに追加します。

WSDL /verbose C:\path\to\wsdl C:\path\to\some\xsd C:\path\to\some\xsd

VB 出力が必要な場合は/language:VB、 に加えて使用し/verboseます。

于 2012-10-03T14:11:55.397 に答える
1

前任者は、ローカル ファイルからインポートする方法を示していますが、WSDL で 1 つ以上の XSD が参照され、エラーが発生する可能性がわずかにあります。

WSDL 参照エラー

参照されているすべての XSD ファイルをダウンロードし、それらを参照されている WSDL と同じディレクトリに配置する必要があります。次に、手動で WSDL を編集し、schemaLocationをローカルのダウンロード ファイルに変更する必要があります。

  <wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/Imports">
      <xsd:import schemaLocation="http://gate.somesite.local:8084/Shop/SomeService.svc?xsd=xsd0" namespace="http://tempuri.org/" />
      <xsd:import schemaLocation="http://gate.somesite.local:8084/Shop/SomeService.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
      <xsd:import schemaLocation="http://gate.somesite.local:8084/Shop/SomeService.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    </xsd:schema>
  </wsdl:types>

  <wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/Imports">
      <xsd:import schemaLocation="tempuri.org.xsd" namespace="http://tempuri.org/" />
      <xsd:import schemaLocation="schemas.microsoft.com.2003.10.Serialization.xsd" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
      <xsd:import schemaLocation="schemas.microsoft.com.2003.10.Serialization.Arrays.xsd" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    </xsd:schema>
  </wsdl:types>

ダウンロードした XSD ファイルが Web アドレスも参照している可能性があることに注意してください。

このような:

<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DaxServiceLibrary.Messages" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DaxServiceLibrary.Messages" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="http://gate.somesite.local:8084/Shop/DaxService.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />

<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DaxServiceLibrary.Messages" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DaxServiceLibrary.Messages" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="schemas.microsoft.com.2003.10.Serialization.Arrays.xsd" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
于 2021-11-30T07:32:20.883 に答える