如何从WSDL服务标签添加/删除端口?

时间:2015-04-24 16:32:20

标签: c# web-services wcf iis wsdl

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

基本上,我如何选择制作它(或不制作它)?

<wsdl:service name="GameService" />

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

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

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

2 个答案:

答案 0 :(得分:0)

根据MSDN

  

ServiceDescription实例映射到wsdl:service元素。 ServiceDescription实例包含一组ServiceEndpoint实例,每个实例都映射到单个wsdl:port元素。

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

Here是ServiceEndpoints的描述,还有一个示例,您可以看到如何添加/删除它们。我不确定你是否可以在没有至少一个端口的情况下提供功能服务。

希望这有帮助。

答案 1 :(得分:0)

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

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

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

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

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