如何使用WSDL文件创建WCF服务(不拨打电话)


100

我有一个旧的WSDL文件,我想基于此WSDL文件创建服务器。

WSDL是从ASMX生成的(我想是,但不确定)。

我该如何实现?


最初的问题是OP认为他需要基于WSDL 创建客户端

Answers:


112

使用svcutil,您可以从WSDL创建接口和类(数据协定)。

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

这将在C#中创建一个名为“ your.cs”的文件(在VB.NET中为“ your.vb”),其中包含所有必要项。

现在,您需要创建一个“ MyService”类,该类将实现服务接口(IServiceInterface)-或多个服务接口-这是您的服务器实例。

现在,仅靠类本身并不能真正起到帮助作用-您需要将服务托管在某个地方。您需要创建自己的用于托管服务的ServiceHost实例,配置终结点等-或可以在IIS中托管服务。


我用svcutil尝试了同样的方法,但是并没有因为错误而成功。你也许有一些建议,我的问题:goo.gl/dlen
树里

15
我需要“ svcutil your.wsdl your.xsd”才能正常工作!谢谢!
蒂姆·刘易斯

3
查看此SO答案以获取有关以svcutil所需格式下载wsdl和xsd的信息。stackoverflow.com/questions/286657/...
布雷特Widmeier

@marc_s当我将其与WSDL文件一起使用时,似乎以一种非常奇怪的方式重命名了一些元素,这样,进入我服务器的请求甚至都不会被接受。这正常吗?
Arj

@Arjun:否-听起来您需要汇总所有相关事实,并在Stackoverflow上提问!:-)
marc_s

41

如果您知道要搜索的内容,那么那里就有很多资源。尝试“合同第一”和WCF。或“ WSDL First”和WCF。

这是一个选择:


3
对于遵循WSDL基本概述的任何人,第一篇文章:请注意有关的评论ReplyAction="*"。看来您需要摆脱它。从该注释中可以得到一些解释,给出了推理的依据,但是我还没有读过。
dan-gph 2010年

30

将svcutil.exe与该/sc开关一起使用以生成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中的“添加服务参考”工具,可以将地址插入为:

文件:///path/to/wsdl/file.wsdl

并且它将正确加载。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.