in SharePoint, SharePoint 2007

Consuming WCF Service in SharePoint

Today, I had to consume a WCF Service in my SharePoint Feature. I was sure of not using svcutil or Visual Studio 2008’s Add Service Reference because that adds extra files that I might need to consider deploying along with my SharePoint solution. So, how do we consume our service ?

Below are the basic steps if you want to create your WCF Client manually via the code:

Put the necessary web.config entries into your SharePoint’s application’s web.config . A typical example would be:

   1: <system.serviceModel>
   2:     <bindings>
   3:       <wsHttpBinding>
   4:         <binding name="insert-your-binding-configuration">
   5:           <security mode="Message">
   6:             <transport clientCredentialType="Windows"
   7:                        proxyCredentialType="None" realm="" />
   8:             <message clientCredentialType="Windows"
   9:                      negotiateServiceCredential="true"
  10:                      algorithmSuite="Default"
  11:                      establishSecurityContext="true" />
  12:           </security>
  13:         </binding>
  14:       </wsHttpBinding>
  15:     </bindings>
  16:     <client>
  17:       <endpoint
  18:         address="insert-your-address"
  19:         binding="wsHttpBinding"
  20:         bindingConfiguration="insert-your-binding-configuration"
  21:         contract="insert-your-contract-description"
  22:         name="insert-your-endpoint-name">
  23:       </endpoint>
  24:    </client>
  25: </system.serviceModel>
Create a Service Client Channel from your ServiceContract
public interface IMyServiceChannel : IMyService, IClientChannel {}

The IMyService is my service contract

Create a Channel Factory and associate with the endpoint configuration name

ChannelFactory<IMyServiceChannel> channelFactory =
    new ChannelFactory<IMyServiceChannel>("insert-your-endpoint-name")

With the factory, now we can create our Proxy

IMyServiceChannel proxy = channelFactory.CreateChannel()

You are now ready! Wrap these in a using statement and invoke your service methods using the proxy created above 🙂

Write a Comment