 <p>The accepted answer here did not work for me. Instead I had to cast the base channel into an IContextChannel, and set the OperationTimeout on that. </p> <p>To do that, I had to create a new file with a partial class, that matched the name of the ServiceReference. In my case the I had a PrintReportsService. Code is below. </p> <pre><code>using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace RecipeManager.PrintReportsService { public partial class PrintReportsClient : System.ServiceModel.ClientBase&lt;RecipeManager.PrintReportsService.PrintReports&gt;, RecipeManager.PrintReportsService.PrintReports { public void SetOperationTimeout(TimeSpan timeout) { ((System.ServiceModel.IContextChannel)base.Channel).OperationTimeout = timeout; } } } </code></pre> <p>Then when I create the client, I do the following:</p> <pre><code> PrintReportsService.PrintReportsClient client = new RecipeManager.PrintReportsService.PrintReportsClient(); client.SetOperationTimeout(new TimeSpan(0, 4, 0)); </code></pre> <p>That did it for me! More info is available <a href="http://final-proj.blogspot.com/2009/09/wcf-timeouts.html" rel="nofollow noreferrer">here</a>, but the code snippet in this post doesn't compile. </p>