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

时间:2015-03-03 05:55:26

标签: wcf soap wsdl

我是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>

我是怎么做到的?有人可以给我一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:4)

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

像这样:

<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端口名称将是我想要的。

答案 1 :(得分:0)

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

[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>