如何 add/remove 来自 WSDL 服务标签的端口?

How to add/remove ports from WSDL service tag?

我使用 C# WCF 创建了一个 Web 服务,该服务通过 IIS 托管。 hide/remove 端口是否有任何设置并使服务标签看起来像这样?设置是在 IIS 服务器上,还是在 Web 服务 web.config 文件中?

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

<wsdl:service name="GameService" />

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

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

进一步说明:这是解决 的尝试,但未得到答复。这个问题是试图简化和改写,以便我实际收到可能的解决方案。

根据 MSDN:

A ServiceDescription instance maps to a wsdl:service element. A ServiceDescription instance contains a collection of ServiceEndpoint instances that each map to individual wsdl:port elements.

因此,您应该 adding/removing ServiceEndpoint 以影响生成的 WSDL 中的端口部分。

Here 是对 ServiceEndpoints 的描述,还有一个示例,因此您可以了解如何 add/remove 它们。我不确定您是否可以在没有至少一个端口的情况下提供功能性服务。

希望对您有所帮助。

回答:基于 SOAP 的端点绑定在 WSDL 中列出,基于 REST 的则没有。

端点绑定有两种不同的类型:SOAP 和 REST。您的服务可以将两者都包含在 web.config 文件中,只要它们具有不同的地址即可,但只有 SOAP 端点会列在 WSDL 中。不需要额外的设置或配置,服务会自动获取此信息,只要它是受支持的类型。

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

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

感谢@nodots 为我指明了正确的方向。