title: WCF Timeout Problem
body: <p>I have the following code</p>
  
  <pre><code>public bool StartWCF()
      {
          try
          {
              // Select the first entry. I hope it's this maschines IP
              // IPAddress _ipAddress = ips.AddressList[0];
              var ipAddress = new IPAddress(new byte[] { 127, 0, 0, 1 });
  
              // Create the url that is needed to specify where the service should be started
              this.m_UrlMetaServiceComm = "net.tcp://" + ipAddress + ":8000/VSMDBCommunication";
              this.m_UrlMetaServicePart = "net.tcp://" + ipAddress + ":8000/VSMDBPartType";
  
              string endPointAddrComm = this.m_UrlMetaServiceComm;
              var tcpBindingComm = new NetTcpBinding
                  {
                      TransactionFlow = false,
                      MaxReceivedMessageSize = 20000000,
                      MaxBufferSize = 20000000,
                      MaxBufferPoolSize = 20000000,
                      ReaderQuotas = { MaxNameTableCharCount = 20000000 },
                      OpenTimeout = new TimeSpan(0, 5, 0),
                      SendTimeout = new TimeSpan(0, 5, 0),
                      CloseTimeout = new TimeSpan(0, 5, 0)
                  };
              tcpBindingComm.Security.Transport.ProtectionLevel = ProtectionLevel.EncryptAndSign;
              tcpBindingComm.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
              tcpBindingComm.Security.Mode = SecurityMode.None;
  
              var endpointAddressComm = new EndpointAddress(endPointAddrComm);
              this.m_ChannelCommunication = ChannelFactory&lt;IVSMDBCommunication&gt;.CreateChannel(
                  tcpBindingComm, endpointAddressComm);
              ((IContextChannel)m_ChannelCommunication).OperationTimeout = new TimeSpan(0, 5, 0);
              string endPointAddrPart = this.m_UrlMetaServicePart;
              var tcpBindingPart = new NetTcpBinding
                  {
                      TransactionFlow = false,
                      MaxReceivedMessageSize = 20000000,
                      MaxBufferSize = 20000000,
                      MaxBufferPoolSize = 20000000,
                      ReaderQuotas = { MaxNameTableCharCount = 20000000 },
                      OpenTimeout = new TimeSpan(0, 5, 0),
                      SendTimeout = new TimeSpan(0, 5, 0),
                      CloseTimeout = new TimeSpan(0, 5, 0)
                  };
              tcpBindingPart.Security.Transport.ProtectionLevel = ProtectionLevel.EncryptAndSign;
              tcpBindingPart.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
              tcpBindingPart.Security.Mode = SecurityMode.None;
  
              var endpointAddressPart = new EndpointAddress(endPointAddrPart);
              this.m_ChannelPartTypes = ChannelFactory&lt;IVSMDBPartType&gt;.CreateChannel(
                  tcpBindingPart, endpointAddressPart);
              ((IContextChannel)m_ChannelPartTypes).OperationTimeout = new TimeSpan(0, 5, 0);
              return true;
          }
          catch (CommunicationObjectFaultedException faultEx)
          {
              // System.Diagnostics.Trace.TraceError(faultEx.ToString());
              Console.WriteLine("An unknown exception was received. " + faultEx.Message + faultEx.StackTrace);
              Console.Read();
              return false;
          }
          catch (EndpointNotFoundException endEx)
          {
              // System.Diagnostics.Trace.TraceError(endEx.ToString());
              Console.WriteLine("An unknown exception was received. " + endEx.Message + endEx.StackTrace);
              Console.Read();
              return false;
          }
      }
  </code></pre>
  
  <p>and I occasionally get the following error when the underlying process takes more than a minute.</p>
  
  <p>Message: </p>
  
  <blockquote>
    <p>This request operation sent to
    net.tcp://127.0.0.1:8000/VSMDBCommunication
    did not receive a reply within the
    configured timeout (00:01:00).  The
    time allotted to this operation may
    have been a portion of a longer
    timeout.  This may be because the
    service is still processing the
    operation or because the service was
    unable to send a reply message. 
    Please consider increasing the
    operation timeout (by casting the
    channel/proxy to IContextChannel and
    setting the OperationTimeout property)
    and ensure that the service is able to
    connect to the client.</p>
  </blockquote>
  
  <p>How can I cast the channel in a different way than I am doing to avoid this error, which makes sense because the underlying request can take slightly over a minute to compute.</p>