From 64596d538bb0926f12199ab675f2d2c518cb0d1c Mon Sep 17 00:00:00 2001 From: "Chris Ross (ASP.NET)" Date: Tue, 7 Nov 2017 09:03:49 -0800 Subject: [PATCH] TestServer: Copy the feature collection to mitigate multi-threading --- src/Microsoft.AspNetCore.TestHost/HttpContextBuilder.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.AspNetCore.TestHost/HttpContextBuilder.cs b/src/Microsoft.AspNetCore.TestHost/HttpContextBuilder.cs index 8c69ddd0e9..4617be5308 100644 --- a/src/Microsoft.AspNetCore.TestHost/HttpContextBuilder.cs +++ b/src/Microsoft.AspNetCore.TestHost/HttpContextBuilder.cs @@ -110,7 +110,13 @@ namespace Microsoft.AspNetCore.TestHost { // Sets HasStarted await _responseFeature.FireOnSendingHeadersAsync(); - _responseTcs.TrySetResult(_httpContext); + // Copy the feature collection so we're not multi-threading on the same collection. + var newFeatures = new FeatureCollection(); + foreach (var pair in _httpContext.Features) + { + newFeatures[pair.Key] = pair.Value; + } + _responseTcs.TrySetResult(new DefaultHttpContext(newFeatures)); } }