如何使用WSDL文件来创build一个WCF服务(不打电话)

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

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

我怎样才能做到这一点?


OP认为他需要创build一个基于WSDL的客户端的原始问题 。

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

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

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

现在,您需要创build一个“MyService”类来实现服务接口(IServiceInterface) – 或几个服务接口 – 这是您的服务器实例。

现在,一个类本身并没有真正的帮助 – 你需要在某个地方托pipe这个服务。 您需要创build自己的ServiceHost实例来托pipe服务,configuration端点等等,或者您可以在IIS中托pipe您的服务。

如果你知道要search什么,那里有很好的资源。 尝试“合同第一”和WCF。 或“WSDL First”和WCF。

这里是一个select:

  • WSDL的基本概述 – 使用WCF和SvcUtil.exe进行首次开发 。
  • WSCF – Visual Studio的一个免费插件,使用WCF的Contract-Firstdevise
    • WSCF简介
    • 使用WSCF的演练
    • CodePlex上的WSCF项目页面(WSCF现在是开源的)
  • 关于如何devise“WCF友好型”WSDL的文章

使用svcutil.exe和/sc开关来生成WCF合约。 这将创build一个代码文件,您可以添加到您的项目。 它将包含您创build服务所需的所有接口和数据types。 使用/o开关更改输出位置,或者可以在运行svcutil.exe的文件夹中find该文件。 默认语言是C#,但我认为(我从来没有尝试过),你应该能够使用/l:vb来改变这个。

 svcutil /sc "WSDL file path" 

如果您的WSDL有任何支持的XSD文件,那么在WSDL之后将其作为parameter passing。

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

然后创build一个新的类,这是你的服务,并实现刚刚创build的合同界面。

您可以使用svcutil.exe生成客户端代码。 这将包括服务合同的定义以及所需的任何数据合同和错误合同。

然后,简单地删除客户端代码:实现服务合同的类。 然后,您需要自己实施这些服务。

使用Visual Studio中的“添加服务引用”工具,可以将地址插入为:

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

它会正确加载。