【发布时间】:2011-07-17 20:23:52
【问题描述】:
我的客户指定了一个 WSDL 文件作为我必须实现的 Web 服务的合同。 (确实必须是那个 WSDL 文件,因为它已经传达给其他合作伙伴等等,他们也将基于该 WSDL 实现自己的 Web 服务和客户端。这是一个 63 KB 的 WSDL 文件。)
使用 wsdl.exe,我为服务器端创建了代理类。所以我可以实现网络服务。 但是:如果使用 wsdl.exe 基于原始 WSDL 文件创建客户端代理类,则会导致客户端应用程序无法与 Web 服务通信!
INSTEAD:通过将“?wsdl”添加到 Web 服务 URL,我得到另一个 WSDL 文件。当使用第二个 WSDL 文件来创建客户端代理类时,这会导致客户端应用程序能够完美地与 Web 服务进行通信。奇怪的是,第二个 WSDL 文件的大小为 288 KB,而不是原始 WSDL 文件的 63 KB。
这应该意味着 WSDL 不是往返的……(WSDL 文件 -> wsdl.exe 用于创建服务器端代理类 -> Web 服务 -> 将“?wsdl”添加到 Web 服务 URL -> 导致另一个WSDL 文件作为原始文件(更糟糕的是:它们不兼容)。)
谁能解释一下? (对于我的项目来说这很重要,因为其他方将使用原始 WSDL 文件,因此他们将无法与我的 Web 服务进行通信......)
我使用 C# 和 CLI 进行了测试。它是可重现的。我正在使用 IIS 7.5 和 .NET framework 3.5。
【问题讨论】:
-
最好发布命令行设置,以及生成的 C 和 S 不匹配的示例。比较文件大小是没有意义的。
标签: c# web-services iis wsdl command-line-interface