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); }