8

使用wsdl.exe /l:CS /serverInterface,我从 WDSL 文档生成了一个 C# 接口。我已经在 WCF 类上实现了该接口。生成的服务在本地运行:

http://localhost:51454/TapasSim.svc

这显示了默认站点。当我附加?wsdl到 URL 时出现问题:

http://localhost:51454/TapasSim.svc?wsdl

在此处输入图像描述

与我的预期不同,此链接不返回 WDSL 文档!相反,它指向您在没有?wsdl. 结果,我无法引用 Web 服务。如果我运行svcutil.exe它会给出这个错误:

如果您尝试生成客户端,这可能是因为元数据文档不包含任何有效的合同或服务,或者因为发现所有合同/服务都存在于 /reference 程序集中。验证您是否将所有元数据文档传递给该工具。

但我希望该错误与缺少回复的原因相同?wsdl

什么可能导致 WCF.svc服务不生成 WSDL?

4

2 回答 2

8

事实证明,问题在于混合了两种技术。 wdsl.exe属于早于 WCF 的较旧的“Web 引用”。较新的工具svcutil.exe用于生成 WCF“服务引用”接口。

所以发生的事情是 WCF 寻找[ServiceContract][OperationContract]属性。当它找不到任何东西时,它默默地什么也没做。

至少可以说,对这种情况的无声压制很烦人。像这样的错误No service with [ServiceContract] attribute found真的会有所帮助。

请注意,您可以手动添加[ServiceContract],但这会留下一半“服务参考”一半“Web 参考”。结果可能行不通。

于 2013-01-29T19:51:46.063 回答
0

我在通过启动调试会话提供的 IE 窗口获取 WSDL 时遇到问题。我必须使用一个单独的窗口,确保我将 HTTPS 放在 URL 中。

我们在 443 (SSL) 上托管我们的服务。当您启动调试器时,即使 IE 窗口显示 http: (80),它也在侦听 443 上的流量。
仅供参考,这是通过项目级别设置SSL Enabled控制的

于 2014-03-06T16:18:27.053 回答