web-dev-qa-db-ja.com

WSDLファイルを使用してWCFサービスを作成する方法(呼び出しを行わない)

古いWSDLファイルがあり、このWSDLファイルに基づいてサーバーを作成したい。

WSDLはASMXから生成されます(私は推測しますが、確信はありません)。

どうすればこれを達成できますか?


元の質問 OPがWSDLに基づいてclientを作成する必要があると考えた場所。

94
Raha

Svcutilを使用すると、WSDLからインターフェイスとクラス(データコントラクト)を作成できます。

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)

これにより、C#の「your.cs」(またはVB.NETの「your.vb」)というファイルが作成され、必要なすべてのアイテムが含まれます。

ここで、サービスインターフェイス(IServiceInterface)-またはいくつかのサービスインターフェイス-を実装するクラス「MyService」を作成する必要があります。これはサーバーインスタンスです。

クラス自体はまだ役に立たないので、どこかでサービスをホストする必要があります。サービスをホストする独自のServiceHostインスタンスを作成し、エンドポイントなどを構成する必要があります。または、IIS内でサービスをホストできます。

110
marc_s

何を検索すればよいか知っていれば、そこには良いリソースがあります。 「最初に契約」とWCFを試してください。または「WSDL First」とWCF。

選択範囲は次のとおりです。

41
Cheeso

/scスイッチを指定してsvcutil.exeを使用して、WCFコントラクトを生成します。これにより、プロジェクトに追加できるコードファイルが作成されます。サービスを作成するために必要なすべてのインターフェイスとデータ型が含まれます。 /oスイッチを使用して出力場所を変更するか、svcutil.exeを実行したフォルダーでファイルを見つけることができます。デフォルトの言語はC#ですが、/l:vbを使用してこれを変更できるはずです(試したことはありません)。

svcutil /sc "WSDL file path"

WSDLにサポートするXSDファイルがある場合、WSDLの後に引数としてそれらを渡します。

svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"

次に、サービスである新しいクラスを作成し、作成したばかりのコントラクトインターフェイスを実装します。

29
Dennis Calla

Svcutil.exeを使用してクライアントコードを生成できます。これには、サービス契約の定義と、必要なデータ契約と障害契約が含まれます。

次に、クライアントコードを削除します。サービスコントラクトを実装するクラスです。次に、サービスでそれらを自分で実装する必要があります。

7
John Saunders

Visual Studioの「サービス参照の追加」ツールを使用して、次のようにアドレスを挿入できます。

file:///path/to/wsdl/file.wsdl

そして、それは適切にロードされます。

3
Vagner Gon