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


100

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

WSDLはASMXから生成されます(たぶん私にはわかりません)。

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


OP がWSDLに基づいてクライアントを作成する必要があると考えた元の質問

回答:


112

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内でサービスをホストする必要があります。


私はsvcutilで同じことを試しましたが、実際には障害で成功しませんでした。私の問題に対するいくつかの提案がありますか:goo.gl/dlen
Juri

15
「svcutil your.wsdl your.xsd」は、私が機能するために必要なものです。ありがとう!
Tim Lewis

3
wsdlとxsdをsvcutilが好む形式でダウンロードする方法については、このSOの回答を確認してください。stackoverflow.com/questions/286657/...
ブレットWidmeier

@marc_sこれを自分のWSDLファイルで使用すると、一部の要素の名前が非常に奇妙な方法で変更され、サーバーへの要求が受け入れられないように見えます。これは正常ですか?
Arj

@Arjun:いいえ-これは、関連するすべての事実をまとめて、Stackoverflowで質問する必要があるように聞こえます!:-)
marc_s

41

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

ここに選択があります:


3
WSDL-Firstの記事の基本的な概要に従う人には:について述べているコメントに注意してくださいReplyAction="*"。それを取り除く必要があるようです。そのコメントには理由を示す説明の痕跡がありますが、まだ読んでいません。
dan-gph 2010

30

/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"

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



7

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

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


4

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.