我有一个旧的WSDL文件,我想基于这个WSDL文件创建一个服务器。
WSDL是从ASMX生成的(我想但我不确定)。
我怎样才能做到这一点?
original question OP认为他需要根据WSDL创建客户端。
答案 0 :(得分:110)
使用svcutil,您可以从WSDL创建接口和类(数据协定)。
svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)
这将在C#(或VB.NET中的“your.vb”)中创建一个名为“your.cs”的文件,其中包含所有必需的项目。
现在,您需要创建一个类“MyService”,它将实现服务接口(IServiceInterface) - 或几个服务接口 - 这是您的服务器实例。
现在一个类本身并没有真正帮助 - 你需要在某个地方托管服务。您需要创建自己的ServiceHost实例来托管服务,配置端点等等 - 或者您可以在IIS中托管您的服务。
答案 1 :(得分:41)
如果你知道要搜索什么,那里有很好的资源。尝试“合同优先”和WCF。或“WSDL First”和WCF。
这是一个选择:
答案 2 :(得分:29)
将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"
然后创建一个新类,它是您的服务并实现您刚刚创建的合同接口。
答案 3 :(得分:7)
您可以使用svcutil.exe生成客户端代码。这将包括服务合同的定义以及所需的任何数据合同和故障合同。
然后,只需删除客户端代码:实现服务合同的类。然后,您需要自己在服务中实施它们。
答案 4 :(得分:3)
使用Visual Studio中的“添加服务引用”工具,可以将地址插入:
文件:///path/to/wsdl/file.wsdl
它会正确加载。