diff --git a/lib/netstd/Tests/Thrift.Tests/Transports/THttpTransportTests.cs b/lib/netstd/Tests/Thrift.Tests/Transports/THttpTransportTests.cs
new file mode 100644
index 0000000..2a2d884
--- /dev/null
+++ b/lib/netstd/Tests/Thrift.Tests/Transports/THttpTransportTests.cs
@@ -0,0 +1,40 @@
+// Licensed to the Apache Software Foundation(ASF) under one
+// or more contributor license agreements.See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System.Net.Http;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Thrift.Transport.Client;
+
+namespace Thrift.Tests.Transports
+{
+    [TestClass]
+    public class THttpTransportTests
+    {
+        [TestMethod]
+        public void THttpTransport_Uses_Configured_ConnectionTimeout_Test()
+        {
+            var client = new HttpClient();
+            var httpClientTransport = new THttpTransport(client, null)
+            {
+                ConnectTimeout = 5000
+            };
+
+            Assert.IsTrue(client.Timeout.TotalMilliseconds == 5000);
+            Assert.IsTrue(httpClientTransport.ConnectTimeout == 5000);
+        }
+    }
+}
diff --git a/lib/netstd/Thrift/Transport/Client/THttpTransport.cs b/lib/netstd/Thrift/Transport/Client/THttpTransport.cs
index 51f91ce..4ca439e 100644
--- a/lib/netstd/Thrift/Transport/Client/THttpTransport.cs
+++ b/lib/netstd/Thrift/Transport/Client/THttpTransport.cs
@@ -36,7 +36,7 @@
         private readonly X509Certificate[] _certificates;
         private readonly Uri _uri;
 
-        private readonly int _connectTimeout = 30000; // Timeouts in milliseconds
+        private int _connectTimeout = 30000; // Timeouts in milliseconds
         private HttpClient _httpClient;
         private Stream _inputStream;
         private MemoryStream _outputStream = new MemoryStream();
@@ -92,6 +92,22 @@
         // According to RFC 2616 section 3.8, the "User-Agent" header may not carry a version number
         public readonly string UserAgent = "Thrift netstd THttpClient";
 
+        public int ConnectTimeout
+        {
+            set
+            {
+                _connectTimeout = value;
+                if(_httpClient != null)
+                    _httpClient.Timeout = TimeSpan.FromMilliseconds(_connectTimeout);
+            }
+            get
+            {
+                if (_httpClient == null)
+                    return _connectTimeout;
+                return (int)_httpClient.Timeout.TotalMilliseconds;
+            }
+        }
+
         public override bool IsOpen => true;
 
         public HttpRequestHeaders RequestHeaders => _httpClient.DefaultRequestHeaders;
