【发布时间】:2010-10-31 07:29:33
【问题描述】:
我有一个旧的 WSDL 文件,我想根据这个 WSDL 文件创建一个服务器。
WSDL 是从 ASMX 生成的(我猜想但我不确定)。
我怎样才能做到这一点?
original question OP 认为他需要基于 WSDL 创建一个客户端。
【问题讨论】:
我有一个旧的 WSDL 文件,我想根据这个 WSDL 文件创建一个服务器。
WSDL 是从 ASMX 生成的(我猜想但我不确定)。
我怎样才能做到这一点?
original question OP 认为他需要基于 WSDL 创建一个客户端。
【问题讨论】:
使用 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 中托管您的服务。
【讨论】:
如果您知道要搜索什么,那里有很好的资源。尝试“合同优先”和 WCF。或“WSDL 优先”和 WCF。
这是一个选择:
【讨论】:
ReplyAction="*" 的评论。看来你需要摆脱它。该评论中有一系列解释给出了推理,但我还没有阅读。
使用 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"
然后创建一个新类作为您的服务并实现您刚刚创建的合约接口。
您可以使用 svcutil.exe 生成客户端代码。这将包括服务合同的定义以及所需的任何数据合同和故障合同。
然后,只需删除客户端代码:实现服务契约的类。然后,您需要自己在服务中实现它们。
【讨论】:
使用 Visual Studio 中的“添加服务引用”工具,您可以将地址插入为:
file:///path/to/wsdl/file.wsdl
它会正确加载。
【讨论】: