Add following code when you are calling WCF service:
using(WCFServiceClient client = new WCFServiceClient ())
client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 15, 30);
For a client, you would want to adjust the sendTimeout
attribute of a binding element. For a service, you would want to adjust the receiveTimeout
attribute of a binding element.
receiveTimeout - It includes receiving a reply message for a request/reply service operation. This timeout also applies when sending reply messages from a callback contract method.
sendTimeout - Gets or sets the interval of time that a connection can remain inactive, during which no application messages are received, before it is dropped.
It is in Hour:Minute:Second format.
Secondly you need to improve performance of execution of StoredProcedure. It is not good to execute a stored proc as 10 minutes. So just see execution plan and add find out where it is taking time. You can add some non-clustered index to tables or optimize your select query.
SQL Profiler and SQL Tuning Advisor