Add following code when you are calling WCF service:
using(WCFServiceClient client = new WCFServiceClient ())
{
client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 15, 30);
}
or
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.
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="longTimeoutBinding"
receiveTimeout="00:10:00" sendTimeout="00:10:00">
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
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[
^]