title: WCF Client not able to connect on some machines
body: <p>I have a simple self host WCF Service. I have this service running on remote server. I am able to communicate to service with client running on my machine(I am local admin). 
  But when I run same client on different machine(non admin) they are not able to communicate.</p>
  
  <p>I monitored resource manager and I see two random local ports are being open at each time of service call and call back. So I cannot open specific ports.</p>
  
  <p>Any Idea what could be the possible reason or firewall configuration change on other machines?</p>
  
  <p>I am very new to WCF. Please pardon me if its a basic question.</p>
  
  <p>WCF Server Code</p>
  
  <pre><code>namespace CService
      {
      class Program
         {
         static void Main(string[] args) {
  
          Console.Title = "C Service";
  
          // Step 1 of the address configuration procedure: Create a URI to serve as the base address.
          Uri baseAddress = new Uri("http://" + GetServerIPPort.ServerIP + ":" + GetServerIPPort.Port + "/CService/Service");
  
  
          // Step 2 of the hosting procedure: Create ServiceHost
          ServiceHost selfHost = new ServiceHost(typeof(CSerice), baseAddress);
  
          try
          {
              // Step 3 of the hosting procedure: Add a service endpoint.
              selfHost.AddServiceEndpoint(typeof(ICService), new BasicHttpBinding(), "CService");
  
              // Step 4 of the hosting procedure: Enable metadata exchange.
              ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
              smb.HttpGetEnabled = true;
              selfHost.Description.Behaviors.Add(smb);
  
              // Step 5 of the hosting procedure: Start (and then stop) the service.
              selfHost.Open();
              Console.WriteLine("The Coemet Service is ready and its listening on {0}", baseAddress.AbsoluteUri.ToString() + ":" + baseAddress.Port.ToString());
  
              Console.WriteLine("Press &lt;ENTER&gt; to terminate service.");
              Console.WriteLine();
              Console.ReadLine();
  
              // Close the ServiceHostBase to shutdown the service.
              selfHost.Close();
          }
          catch (CommunicationException ce)
          {
              Console.WriteLine("An exception occurred: {0}", ce.ToString());
              selfHost.Abort();
          }
      }
  }
  </code></pre>
  
  <p>I have generatedProxy object with help of this link <a href="http://msdn.microsoft.com/en-us/library/ms733133%28v=vs.110%29.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms733133(v=vs.110).aspx</a></p>
  
  <p>My client code snippet looks like this.</p>
  
  <pre><code>string serviceEndPointAddress = "http://" + GetServerIPPort.ServerIP + ":" +     GetServerIPPort.Port + "/CService/Service/CService";
  
              var remoteAddress = new System.ServiceModel.EndpointAddress(new Uri(serviceEndPointAddress));
              object rawOutput;
              using (var client = new CServiceClient(new BasicHttpBinding(), remoteAddress))
              {
                  client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 0, 100);
                  try
                  {
                      rawOutput = client.GetData(Identifier, field, date);
                  }
                  catch (Exception e)
                  {
                      errorMsg = e.ToString();
                  }
              }\n
  </code></pre>
  
  <p>Error trowed at "client.GetData(Identifier, field, date)"</p>
  
  <p>System.Runtime.Serialization.InvalidDataContractException: Type 'System.Threading.Tasks.Task<code>1[System.Object]' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute.  If the type is a collection, consider marking it with the CollectionDataContractAttribute.  See the Microsoft .NET Framework documentation for other supported types.
     at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.ThrowInvalidDataContractException(String message, Type type)
     at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id, RuntimeTypeHandle typeHandle, Type type)
     at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id, RuntimeTypeHandle typeHandle, Type type)
     at System.Runtime.Serialization.XsdDataContractExporter.GetSchemaTypeName(Type type)
     at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.CreatePartInfo(MessagePartDescription part, OperationFormatStyle style, DataContractSerializerOperationBehavior serializerFactory)
     at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.CreateMessageInfo(DataContractFormatAttribute dataContractFormatAttribute, MessageDescription messageDescription, DataContractSerializerOperationBehavior serializerFactory)
     at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter..ctor(OperationDescription description, DataContractFormatAttribute dataContractFormatAttribute, DataContractSerializerOperationBehavior serializerFactory)
     at System.ServiceModel.Description.DataContractSerializerOperationBehavior.GetFormatter(OperationDescription operation, Boolean&amp; formatRequest, Boolean&amp; formatReply, Boolean isProxy)
     at System.ServiceModel.Description.DataContractSerializerOperationBehavior.System.ServiceModel.Description.IOperationBehavior.ApplyClientBehavior(OperationDescription description, ClientOperation proxy)
     at System.ServiceModel.Description.DispatcherBuilder.BindOperations(ContractDescription contract, ClientRuntime proxy, DispatchRuntime dispatch)
     at System.ServiceModel.Description.DispatcherBuilder.BuildProxyBehavior(ServiceEndpoint serviceEndpoint, BindingParameterCollection&amp; parameters)
     at System.ServiceModel.Channels.ServiceChannelFactory.BuildChannelFactory(ServiceEndpoint serviceEndpoint, Boolean useActiveAutoClose)
     at System.ServiceModel.ChannelFactory.CreateFactory()
     at System.ServiceModel.ChannelFactory.OnOpening()
     at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
     at System.ServiceModel.ChannelFactory.EnsureOpened()
     at System.ServiceModel.ChannelFactory</code>1.CreateChannel(EndpointAddress address, Uri via)
     at System.ServiceModel.ClientBase<code>1.CreateChannel()
     at System.ServiceModel.ClientBase</code>1.CreateChannelInternal()
     at System.ServiceModel.ClientBase`1.get_Channel()
     at CServiceClient.GetData(String Identifier, String field, DateTime date)</p>