开发者

WCF Web Service change wsdl name and targetNamespace

All,

I'm a little new to WCF over IIS but have done some ASMX web services before. My WCF service is up a开发者_如何学Pythonnd running but the helper page generated by the web service for me has the default names, i.e. the page that says:

You have created a service.

To test this service, you will need to create a client and use it to call the service. You can do this using the svcutil.exe tool from the command line with the following syntax:

svcutil.exe http://localhost:53456/ServicesHost.svc?wsdl

In a standard ASMX site I would use method/class attributes to give the web service a name and a namespace. When I click on the link the WSDL has:

<wsdl:definitions name="SearchServices" targetNamespace="http://tempuri.org/" 

i.e. not the WCF Service Contract Name and Namespace from my Interface. I assume the MEX is using some kind of default settings but I'd like to change them to be the correct names. How can I do this?


Add this to your service contract

[ServiceContract(Namespace = "http://some.com/service/", Name = "ServiceName")]

Add this to your service implementation

[ServiceBehavior(Namespace = "http://some.com/service/")]

Add this to your web.config

<endpoint binding="basicHttpBinding" bindingNamespace="http://myservice.com"....


Actually, it should be put on ServiceBehavior:

[ServiceBehavior(Namespace = "http://some.com/service/", Name = "ServiceName"]

Then WSDL name will be changed.


Addition to @neolei, I used this to adjust the default service name and port name of an web service to adapt it to an existing integration.

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

Resulting WSDL:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜