古いWSDLファイルがあり、このWSDLファイルに基づいてサーバーを作成したい。
WSDLはASMXから生成されます(私は推測しますが、確信はありません)。
どうすればこれを達成できますか?
元の質問 OPがWSDLに基づいてclientを作成する必要があると考えた場所。
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内でサービスをホストできます。
何を検索すればよいか知っていれば、そこには良いリソースがあります。 「最初に契約」とWCFを試してください。または「WSDL First」とWCF。
選択範囲は次のとおりです。
/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"
次に、サービスである新しいクラスを作成し、作成したばかりのコントラクトインターフェイスを実装します。
Svcutil.exeを使用してクライアントコードを生成できます。これには、サービス契約の定義と、必要なデータ契約と障害契約が含まれます。
次に、クライアントコードを削除します。サービスコントラクトを実装するクラスです。次に、サービスでそれらを自分で実装する必要があります。
Visual Studioの「サービス参照の追加」ツールを使用して、次のようにアドレスを挿入できます。
file:///path/to/wsdl/file.wsdl
そして、それは適切にロードされます。