如何更改 wcf 端口名称和绑定?

How do I change wcf port name and binding?

我是 WCF 新手。我正在尝试从客户端提供的 wsdl 创建一个 web 服务; 我在更改某些 wcf 生成的 wsdl 条目以匹配提供的 wsdl 时遇到问题。

这是我的 wsdl 端口名称:

<wsdl:service name="MyService">
<wsdl:port name="BasicHttpBinding_IService" binding="i0:BasicHttpBinding_IService">
<soap:address location="http://localhost:53336/MyServiceApi.svc"/>
</wsdl:port>
</wsdl:service>

但我需要更改为

<wsdl:service name="MyServiceSoap">
<wsdl:port name="MyServiceSoap" binding="m:MyServiceSoap">
<soap:address location="http://localhost:53336/MyServiceApi.svc"/>
</wsdl:port>
</wsdl:service>

我该怎么做?有人可以告诉我一个简单的解决方案吗?

我找到了设置端口名称的解决方案。

像这样:

<services>
  <service name="MyServiceSoap">
    <endpoint name="MyServiceSoap" address="" binding="basicHttpBinding" contract="IService" bindingNamespace="MyServiceSoap" bindingName="MyServiceSoap" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

那么wsdl端口名称就是我想要的。

我将此属性添加到我的服务实现中,这解决了我的问题:

[ServiceBehavior(Name = "MyServiceName")]
public class MyServiceClass : IServiceContract
{
  // implementation code
}

生成的 WSDL:

<wsdl:service name="MyServiceName">
  <wsdl:port name="MyServiceClass" binding="tns:MyServiceClass">
    <soap:address location="http://localhost:52233/MyService.svc"/>
  </wsdl:port>
</wsdl:service>