public void NullReferenceExceptionAfterClientDispose()
        {
            ContosoServiceClient contosoClient = new ContosoServiceClient(null);
            HttpResponseMessage  response      = contosoClient.DoSyncWork();
            string cont = response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.NotNull(response);

            contosoClient.Dispose();

            Assert.ThrowsAny <NullReferenceException>(() => SendAndReceiveResponse(contosoClient.HttpClient));
        }
        public void UseHttpClientAfterServiceClientDispose()
        {
            HttpClient hc = new HttpClient(new ContosoMessageHandler());

            hc.BaseAddress = new Uri(DEFAULT_URI);
            HttpResponseMessage resMsg = SendAndReceiveResponse(hc);

            Assert.Equal(HttpStatusCode.OK, resMsg.StatusCode);

            ContosoServiceClient contosoClient = new ContosoServiceClient(hc, false);
            HttpResponseMessage  response      = contosoClient.DoSyncWork();
            string cont = response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal("Contoso Rocks", cont);
            Assert.Equal(new Uri(DEFAULT_URI), contosoClient.HttpClient.BaseAddress);

            contosoClient.Dispose();

            HttpResponseMessage secondTimeMsg = SendAndReceiveResponse(hc);

            Assert.Equal(HttpStatusCode.OK, secondTimeMsg.StatusCode);
        }
        public void DisposeServiceClientWhileProcessingRequest()
        {
            HttpClient hc = new HttpClient(new DelayedHandler("DelayingResponse", TimeSpan.FromSeconds(5)));

            hc.BaseAddress = new Uri(DEFAULT_URI);
            HttpResponseMessage resMsg = SendAndReceiveResponse(hc);
            string resStr = resMsg.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal("DelayingResponse", resStr);

            ContosoServiceClient contosoClient = new ContosoServiceClient(hc, false);

            var result = Task.Run <HttpResponseMessage>(async() =>
            {
                return(await contosoClient.DoAsyncWork());
            });

            contosoClient.Dispose();

            HttpResponseMessage delayedResponse = result.ConfigureAwait(false).GetAwaiter().GetResult();
            string delayedContent = delayedResponse.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal("DelayingResponse", delayedContent);
        }