Is your WFC Service hitting the Maximum Limits set on the default service configurations? Open up the artificial constraints of the WCF Service Debugging WCF Services and message sizes. Caveat emptor: If you need to increase the size of the of the contracts, it probably indicates that you should reexamine the design of your data contract. In any case, to “Open Up” the service, you will need to set on both the client and server side configurations:
1. Timeouts
2. Message Sizes
3. Max Objects In Graph
Service side configurations
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behaviorname="Server.WcfService.MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="Server.WcfService.MyServiceBehavior"
name="Server.WcfService.MyService">
<endpoint address="http://MyServer:1260/MyService.svc"
binding="wsHttpBinding"
bindingConfiguration="MyServiceBinding"
contract="Server.WcfService.IMyService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="MyServiceBinding"
maxReceivedMessageSize="2147483647"
openTimeout="00:10:00"
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
closeTimeout="00:10:00"
maxBufferPoolSize="2147483647" >
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
Client side configurations
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IMyService"
closeTimeout="00:10:00"
openTimeout="00:10:00"
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
bypassProxyOnLocal="false"
transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
messageEncoding="Text"
textEncoding="utf-8"
useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<reliableSessionordered="true"
inactivityTimeout="00:10:00"
enabled="false"/>
</binding>
</wsHttpBinding>
</bindings>
<client>
bindingConfiguration="WSHttpBinding_IMyService"
contract="MyServiceReference.IMyService"
name="WSHttpBinding_IMyService"
behaviorConfiguration="MyServiceBehavior"/>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="MyServiceBehavior">
<dataContractSerializer
maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
What is this 2,147,483,647business? It is equal to 231 – 1, the max value of a 32 bit signed integer.
Security: use it. Make sure your client and service side tags match. You may have noticed that it is absent from the above example. That means that it is going to use the default which is Message for this particular binding type.
http://msdn.microsoft.com/en-us/library/ms731059.aspx
When the errors you are receiving don’t seem to make any sense, you can add robust diagnostics by adding the following tag (make sure the service has write access to the location specified in the InitializeData):
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="sdt"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "serviceLog.svcLog" />
</listeners>
</source>
</sources>
</system.diagnostics>