如何从 WSDL 服务标记中添加/删除端口



我使用 C# WCF 创建了一个 Web 服务,该服务通过 IIS 承载。是否有任何设置可以隐藏/删除端口并使服务标签如下所示?设置是在 IIS 服务器上,还是在 Web 服务 web.config 文件中?

基本上,我该如何选择让它(或不让它)看起来像这样?

<wsdl:service name="GameService" />

澄清:我想知道在IIS或web.config中是否有一个设置,允许完全隐藏或显示所有配置的端口。

其他问题:WSDL 是否不读取 Web.Config 文件?是 IIS 生成 WSDL 还是服务生成?

进一步澄清:这是试图解决这个问题,这个问题一直没有答案。这个问题试图简化和改写,以便我实际上收到可能的解决方案。

答:基于 SOAP 的端点绑定列在 WSDL 中,基于 REST 的端点绑定不在

终结点绑定有两种不同的类型:SOAP 和 REST。只要它们具有不同的地址,您的服务就可以在 web.config 文件中包含它们,但只有 SOAP 端点才会列在 WSDL 中。无需其他设置或配置,只要信息属于受支持的类型,服务就会自动选取此信息。

webHttpBinding 是一个基于 REST 的端点绑定。对于使用该服务的 JSON/JavaScript 客户端,它可以正常工作,但不会在 WSDL 中列出。

basicHttpBinding 是一个基于 SOAP 的端点绑定。它将适用于 C# 客户端。如果使用 Visual Studio 添加服务引用,它会自动将这些终结点添加到 app.config 文件中,这是它可以执行的操作,因为该信息列在 WSDL 中。

感谢@nodots让我指向正确的方向。

根据

MSDN:

服务描述实例映射到 wsdl:service 元素。ServiceDescription 实例包含 ServiceEndpoint 实例的集合,每个实例映射到各个 wsdl:port 元素。

因此,您应该添加/删除 ServiceEndpoint 以影响生成的 WSDL 中的端口部分。

下面是服务终结点的说明,还有一个示例,以便你了解如何添加/删除它们。我不确定您是否可以在没有至少一个端口的情况下拥有功能服务。

希望这有帮助。

最新更新