Sam
Sam

Reputation: 2683

How to create a single WSDL file from existing WCF service?

How do I create a single flat WSDL file (with no external references from within) from an existing WCF service? This WSDL will be used (imported) into an older programming technology that only supports BasicHttpBinding. Please address your answer to a beginner.

Upvotes: 6

Views: 24581

Answers (2)

Philipp Grathwohl
Philipp Grathwohl

Reputation: 2846

I had to do this, too. And I used the WSDLExtras library. It's not too big of a deal.

Here is a step by step instruction for using it:

  1. Download the WCFExtras from here, extract it and add a reference to it in VS.

  2. Add a reference to your Web.config/App.config like this:

    <system.serviceModel>
        <extensions>
            <behaviorExtensions>
                <add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
            </behaviorExtensions>
        </extensions>
    </system.serviceModel>
    
  3. Add the extension to your endpoint behavior and set the singleFile attribute to true

    <endpointBehaviors>
         <behavior name="singleFileEndpointBehavior">
             <wsdlExtensions singleFile="True" />
         </behavior>
    </endpointBehaviors>
    
  4. Use the endpointbehavior for your service-endpoint.

    <endpoint address="YourEndPoint/Address" binding="YourBinding" behaviorConfiguration="singleFileEndpointBehavior" contract="IYourContract">
    

This worked fine for me. You can also download a full example from the WCFExtras project page: ProjectPage

Edit: For the sake of completeness: You can use the ''?singleWsdl'' query parameter since .NET 4.5 as stated in Irwins answer. See the link he posted for more details.

Upvotes: 14

Irwin
Irwin

Reputation: 12829

You can now do this natively in .net 4.5 (beta). There is an option (?singleWsdl instead of ?wsdl) for telling the service to output everything in a single wsdl document. More info on the new stuff here: http://msdn.microsoft.com/en-us/library/dd456789(v=vs.110).aspx

Upvotes: 23

Related Questions