WCF生成的WSDL描述了我的所有绑定,我希望它只描述wsHttpBinding
。
我想要它,因为如果一个PHP客户端包含未知的绑定,它就无法解析它。
有办法做到这一点吗?
答案 0 :(得分:3)
拥有一个服务和一个端点,除了wsHttpBinding之外什么都不暴露,并使用你的PHP客户端连接到那个端点 - 应该可以工作。我认为,你真的没有别的办法可以做 - 如果一个服务公开了多个具有各种绑定的端点,那么所有这些绑定和端点都将以WSDL结束。
所以只需要一个单独的服务条目:
<services>
<service name="MyService">
<endpoint name="WsHttpEndpoint"
address="......."
binding="wsHttpBinding"
contract="IMyService" />
</service>
</services>
并让PHP客户端在这里连接 - 因为只有一个wsHttpBinding端点,它应该可以工作。
因此,您无法真正从元数据中删除任何绑定 - 但您可以阻止包含某些元数据。
另一个选择是为您的服务提供单独的WSDL,它将与PHP一起使用。您甚至可以使用serviceMetadata
行为定义静态外部元数据WSDL:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="test">
<serviceMetadata
externalMetadataLocation="http://YourServer/Service/WSDL/MyService.wsdl"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>