title: WCF Service over netTCPBinding timing out for Clients in LN, working fine for Clients in US
body: <p>I have a WCF Service exposed via TCPbinding running on a server in NY. I have no issues connecting to the service and getting back the results from clients connecting to this service from Americas but having issues for clients from London/Europe. I am not quite sure why this timeout issue happens but below are by Client and Server settings.</p>
  
  <p>Server</p>
  
  <pre><code>&lt;system.serviceModel&gt;
     &lt;bindings&gt;
    &lt;netTcpBinding&gt;
      &lt;binding  name="TCPBinding_IDataService"
                receiveTimeout="00:20:00"
                openTimeout="00:05:00"
                maxBufferPoolSize="2147483647"
                maxReceivedMessageSize="2147483647"
                maxConnections="10"
                maxBufferSize="2147483647"&gt;
        &lt;readerQuotas maxDepth="2147483647"
                      maxStringContentLength="2147483647"
                      maxArrayLength="2147483647"
                      maxBytesPerRead="2147483647"
                      maxNameTableCharCount="2147483647"/&gt;
        &lt;security mode="Message"&gt;
          &lt;message clientCredentialType="Windows"/&gt;
        &lt;/security&gt;
      &lt;/binding&gt;
    &lt;/netTcpBinding&gt;
  &lt;/bindings&gt;
     &lt;services&gt;
    &lt;service behaviorConfiguration="DataServiceBehavior" name="DIT.Data.DRD.Service.PIERDataService"&gt;
      &lt;endpoint address="DataService" binding="netTcpBinding" bindingConfiguration="TCPBinding_IDataService"
        contract="DIT.Data.DRD.Service.IPIERDataService"&gt;
        &lt;identity&gt;
          &lt;dns value="localhost" /&gt;
        &lt;/identity&gt;
      &lt;/endpoint&gt;
      &lt;endpoint address="MEX" binding="mexTcpBinding" contract="IMetadataExchange" /&gt;
      &lt;host&gt;
        &lt;baseAddresses&gt;
          &lt;add baseAddress="net.tcp://localhost:9100/DRDService"/&gt;
        &lt;/baseAddresses&gt;
      &lt;/host&gt;
    &lt;/service&gt;
  &lt;/services&gt;
     &lt;behaviors&gt;
    &lt;serviceBehaviors&gt;
      &lt;behavior name="DataServiceBehavior" &gt;
        &lt;serviceDebug includeExceptionDetailInFaults="true"/&gt;
        &lt;serviceMetadata httpGetEnabled="false"/&gt;
        &lt;dataContractSerializer maxItemsInObjectGraph="61200000" /&gt;
        &lt;serviceThrottling maxConcurrentCalls="100"
                               maxConcurrentInstances="1000"/&gt;
      &lt;/behavior&gt;
    &lt;/serviceBehaviors&gt;
  &lt;/behaviors&gt;
     &lt;diagnostics performanceCounters="Default"&gt;
    &lt;messageLogging logEntireMessage="true" logMalformedMessages="false"
      logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" /&gt;
  &lt;/diagnostics&gt;&lt;/system.serviceModel&gt;
  </code></pre>
  
  <p>My client has the following settings in C# code</p>
  
  <pre><code>private DataServiceClient GetClient(string uri, int? timeout)
      {
          EndpointAddress endpointAddress = new EndpointAddress(new Uri(uri),
                                                                EndpointIdentity.CreateDnsIdentity("localhost"),
                                                                new System.ServiceModel.Channels.AddressHeaderCollection());
          NetTcpBinding svcBinding = new NetTcpBinding();
          svcBinding.Security.Mode = SecurityMode.Message;
          svcBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
  
          svcBinding.MaxReceivedMessageSize = 2147483647;
          svcBinding.MaxBufferPoolSize = 2147483647;
          svcBinding.MaxBufferSize = 2147483647;
          svcBinding.MaxConnections = 10;
  
          svcBinding.ReaderQuotas.MaxBytesPerRead = 2147483647;
          svcBinding.ReaderQuotas.MaxDepth = 2147483647;
          svcBinding.ReaderQuotas.MaxArrayLength = 2147483647;
          svcBinding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
          svcBinding.ReaderQuotas.MaxStringContentLength = 2147483647;
          if (timeout.HasValue)
              svcBinding.SendTimeout = svcBinding.ReceiveTimeout = new TimeSpan(0, timeout.Value, 0);
          else
              svcBinding.SendTimeout = svcBinding.ReceiveTimeout = new TimeSpan(0, 5, 0); // this is default
  
          PIERDataServiceClient dsc = new PIERDataServiceClient(svcBinding, endpointAddress); //this is wcf client from ClientBase
          return dsc;
      }
  </code></pre>
  
  <p>Can someone having experience with WCF timeout issues shed some light on this? I've been trying to follow the gzillion posts on various forums but the understanding I gathered and implementation in the form of code and configuration is not helping much.</p>
  
  <p>TIA,
  Shravan</p>