Просмотр исходного кода

Add DefaultHttpContext._active for debugging (#29748)

Stephen Halter 5 лет назад
Родитель
Сommit
1c8da41a10

+ 6 - 0
src/Http/Http/src/DefaultHttpContext.cs

@@ -36,6 +36,10 @@ namespace Microsoft.AspNetCore.Http
         private DefaultConnectionInfo? _connection;
         private DefaultWebSocketManager? _websockets;
 
+        // This is field exists to make analyzing memory dumps easier.
+        // https://github.com/dotnet/aspnetcore/issues/29709
+        internal bool _active;
+
         /// <summary>
         /// Initializes a new instance of the <see cref="DefaultHttpContext"/> class.
         /// </summary>
@@ -73,6 +77,7 @@ namespace Microsoft.AspNetCore.Http
             _response.Initialize(revision);
             _connection?.Initialize(features, revision);
             _websockets?.Initialize(features, revision);
+            _active = true;
         }
 
         /// <summary>
@@ -85,6 +90,7 @@ namespace Microsoft.AspNetCore.Http
             _response.Uninitialize();
             _connection?.Uninitialize();
             _websockets?.Uninitialize();
+            _active = false;
         }
 
         /// <summary>

+ 16 - 0
src/Http/Http/test/DefaultHttpContextTests.cs

@@ -264,6 +264,22 @@ namespace Microsoft.AspNetCore.Http
             Assert.False(scope.DisposeCalled);
         }
 
+        [Fact]
+        public void InternalActiveFlagIsSetAndUnset()
+        {
+            var context = new DefaultHttpContext();
+
+            Assert.False(context._active);
+
+            context.Initialize(new FeatureCollection());
+
+            Assert.True(context._active);
+
+            context.Uninitialize();
+
+            Assert.False(context._active);
+        }
+
         void TestAllCachedFeaturesAreNull(HttpContext context, IFeatureCollection features)
         {
             TestCachedFeaturesAreNull(context, features);