如何使用WSDL文件创建WCF服务(不进行调用)

如何使用WSDL文件创建WCF服务(不进行调用),wcf,wsdl,Wcf,Wsdl,我有一个旧的WSDL文件,我想基于这个WSDL文件创建一个服务器 WSDL是从ASMX生成的(我想,但我不确定) 我怎样才能做到这一点 OP认为需要基于WSDL创建客户机。使用svcutil,您可以从WSDL创建接口和类(数据契约) svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic) svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file

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

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

我怎样才能做到这一点



OP认为需要基于WSDL创建客户机。

使用svcutil,您可以从WSDL创建接口和类(数据契约)

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)
svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"
这将在C#(或vb.NET中的“your.vb”)中创建一个名为“your.cs”的文件,其中包含所有必需的项

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


现在,一个类本身并没有真正的帮助——您需要在某个地方托管服务。您需要创建自己的ServiceHost实例来承载服务、配置端点等等,或者您可以在IIS中承载服务。

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


然后,只需删除客户机代码:实现服务契约的类。然后,您需要在您的服务中自己实现它们。

如果您知道要搜索什么,就有很好的资源。尝试“合同优先”和WCF。或者“WSDL优先”和WCF

以下是一个选择:

  • WSCF-Visual Studio的免费外接程序,支持与WCF的合同优先设计

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

svcutil /sc "WSDL file path"
如果您的WSDL有任何支持XSD的文件,请将这些文件作为WSDL后面的参数传入

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)
svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"
然后创建一个新类作为您的服务,并实现刚刚创建的合同接口。

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

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


它将正确加载。

我尝试了svcutil的相同功能,但在出现故障时没有成功。您可能对我的问题有一些建议:“svcutil your.wsdl your.xsd”是我工作所需要的!谢谢请查看此答案,以获取有关以svcutil喜欢的格式下载wsdl和xsd的信息@marc_s当我在我的WSDL文件中使用它时,它似乎以一种非常奇怪的方式重命名了一些元素,以至于传入我的服务器的请求甚至不会被接受。这正常吗?@Arjun:不-听起来你需要把所有相关的事实放在一起,然后问一个关于Stackoverflow的问题!-)对于任何遵循WSDL第一篇文章基本概述的人:请注意有关
ReplyAction=“*”
的评论。看来你需要摆脱它。该评论中有一系列解释给出了理由,但我还没有读过。现在链接已失效。另请参见: