diff --git a/AspNetCore.sln b/AspNetCore.sln
index d2a8cb1c9e2e..283031338a7c 100644
--- a/AspNetCore.sln
+++ b/AspNetCore.sln
@@ -605,8 +605,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.A
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Extensions.Tests", "src\Http\Http.Extensions\test\Microsoft.AspNetCore.Http.Extensions.Tests.csproj", "{402C3AC9-1B1D-4523-AB80-A992CEA85F57}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Features.Tests", "src\Http\Http.Features\test\Microsoft.AspNetCore.Http.Features.Tests.csproj", "{C86D97EF-301F-464B-A6B8-DA75BB0DBECE}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Owin.Tests", "src\Http\Owin\test\Microsoft.AspNetCore.Owin.Tests.csproj", "{66ADF274-B5C4-4D0A-91D9-F7FB76ADBF85}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{EB5E294B-9ED5-43BF-AFA9-1CD2327F3DC1}"
@@ -1628,6 +1626,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MinimalSample", "src\Http\s
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.Tests", "src\Servers\Kestrel\Transport.Quic\test\Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.Tests.csproj", "{E3DAEBD3-CD36-493F-877F-460E8FFEAC52}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Features", "Features", "{17F28812-983E-4415-A55D-842DD7EC6887}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Features", "src\Http\Features\src\Microsoft.Extensions.Features.csproj", "{A07D3B13-388B-444F-9E37-DDC0787C4690}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Features.Tests", "src\Http\Features\test\Microsoft.Extensions.Features.Tests.csproj", "{09FFBC53-3EFF-45C4-9822-5D66089CD6AD}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -3462,18 +3466,6 @@ Global
{402C3AC9-1B1D-4523-AB80-A992CEA85F57}.Release|x64.Build.0 = Release|Any CPU
{402C3AC9-1B1D-4523-AB80-A992CEA85F57}.Release|x86.ActiveCfg = Release|Any CPU
{402C3AC9-1B1D-4523-AB80-A992CEA85F57}.Release|x86.Build.0 = Release|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Debug|x64.ActiveCfg = Debug|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Debug|x64.Build.0 = Debug|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Debug|x86.ActiveCfg = Debug|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Debug|x86.Build.0 = Debug|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Release|Any CPU.Build.0 = Release|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Release|x64.ActiveCfg = Release|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Release|x64.Build.0 = Release|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Release|x86.ActiveCfg = Release|Any CPU
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE}.Release|x86.Build.0 = Release|Any CPU
{66ADF274-B5C4-4D0A-91D9-F7FB76ADBF85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{66ADF274-B5C4-4D0A-91D9-F7FB76ADBF85}.Debug|Any CPU.Build.0 = Debug|Any CPU
{66ADF274-B5C4-4D0A-91D9-F7FB76ADBF85}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -7723,6 +7715,30 @@ Global
{E3DAEBD3-CD36-493F-877F-460E8FFEAC52}.Release|x64.Build.0 = Release|Any CPU
{E3DAEBD3-CD36-493F-877F-460E8FFEAC52}.Release|x86.ActiveCfg = Release|Any CPU
{E3DAEBD3-CD36-493F-877F-460E8FFEAC52}.Release|x86.Build.0 = Release|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Debug|x64.Build.0 = Debug|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Debug|x86.Build.0 = Debug|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Release|x64.ActiveCfg = Release|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Release|x64.Build.0 = Release|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Release|x86.ActiveCfg = Release|Any CPU
+ {A07D3B13-388B-444F-9E37-DDC0787C4690}.Release|x86.Build.0 = Release|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Debug|x64.Build.0 = Debug|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Debug|x86.Build.0 = Debug|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|x64.ActiveCfg = Release|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|x64.Build.0 = Release|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|x86.ActiveCfg = Release|Any CPU
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -8019,7 +8035,6 @@ Global
{3957A90B-1DB9-4AA0-A8B8-E7B0B42B0101} = {3D330C1E-D773-4BA8-9E91-123544B0D672}
{529AB96D-853D-41B4-ABE6-D0DED4A50DFD} = {DCBBDB52-4A49-4141-8F4D-81C0FFFB7BD5}
{402C3AC9-1B1D-4523-AB80-A992CEA85F57} = {225AEDCF-7162-4A86-AC74-06B84660B379}
- {C86D97EF-301F-464B-A6B8-DA75BB0DBECE} = {BFDD5ACE-A1F0-4C33-8DA1-06CB5CA53177}
{66ADF274-B5C4-4D0A-91D9-F7FB76ADBF85} = {AA465A56-D9D0-4684-95B0-192F4436C582}
{EB5E294B-9ED5-43BF-AFA9-1CD2327F3DC1} = {627BE8B3-59E6-4F1D-8C9C-76B804D41724}
{4DDE5F1F-B014-4096-9F8B-E5F2C96DF997} = {EB5E294B-9ED5-43BF-AFA9-1CD2327F3DC1}
@@ -8529,6 +8544,9 @@ Global
{AAB50C64-39AA-4AED-8E9C-50D68E7751AD} = {7F99E967-3DC1-4198-9D55-47CD9471D0B6}
{9647D8B7-4616-4E05-B258-BAD5CAEEDD38} = {EB5E294B-9ED5-43BF-AFA9-1CD2327F3DC1}
{E3DAEBD3-CD36-493F-877F-460E8FFEAC52} = {EE9D0952-6060-4723-B329-94A2950A6762}
+ {17F28812-983E-4415-A55D-842DD7EC6887} = {627BE8B3-59E6-4F1D-8C9C-76B804D41724}
+ {A07D3B13-388B-444F-9E37-DDC0787C4690} = {17F28812-983E-4415-A55D-842DD7EC6887}
+ {09FFBC53-3EFF-45C4-9822-5D66089CD6AD} = {17F28812-983E-4415-A55D-842DD7EC6887}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3E8720B3-DBDD-498C-B383-2CC32A054E8F}
diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props
index 3f3b14965777..3e236ccfb5b6 100644
--- a/eng/ProjectReferences.props
+++ b/eng/ProjectReferences.props
@@ -24,6 +24,7 @@
+
diff --git a/eng/SharedFramework.Local.props b/eng/SharedFramework.Local.props
index 49d28f78f0f2..2e371f864c43 100644
--- a/eng/SharedFramework.Local.props
+++ b/eng/SharedFramework.Local.props
@@ -13,7 +13,7 @@
-
+
@@ -47,6 +47,7 @@
+
diff --git a/src/Framework/test/TestData.cs b/src/Framework/test/TestData.cs
index cf2d397e67b9..43ef43f32b35 100644
--- a/src/Framework/test/TestData.cs
+++ b/src/Framework/test/TestData.cs
@@ -118,6 +118,7 @@ static TestData()
"Microsoft.Extensions.FileProviders.Embedded",
"Microsoft.Extensions.FileProviders.Physical",
"Microsoft.Extensions.FileSystemGlobbing",
+ "Microsoft.Extensions.Features",
"Microsoft.Extensions.Hosting",
"Microsoft.Extensions.Hosting.Abstractions",
"Microsoft.Extensions.Http",
@@ -249,6 +250,7 @@ static TestData()
{ "Microsoft.Extensions.FileProviders.Embedded", "6.0.0.0" },
{ "Microsoft.Extensions.FileProviders.Physical", "6.0.0.0" },
{ "Microsoft.Extensions.FileSystemGlobbing", "6.0.0.0" },
+ { "Microsoft.Extensions.Features", "6.0.0.0" },
{ "Microsoft.Extensions.Hosting", "6.0.0.0" },
{ "Microsoft.Extensions.Hosting.Abstractions", "6.0.0.0" },
{ "Microsoft.Extensions.Http", "6.0.0.0" },
diff --git a/src/Http/Http.Features/src/FeatureCollection.cs b/src/Http/Features/src/FeatureCollection.cs
similarity index 100%
rename from src/Http/Http.Features/src/FeatureCollection.cs
rename to src/Http/Features/src/FeatureCollection.cs
diff --git a/src/Http/Http.Features/src/FeatureReference.cs b/src/Http/Features/src/FeatureReference.cs
similarity index 100%
rename from src/Http/Http.Features/src/FeatureReference.cs
rename to src/Http/Features/src/FeatureReference.cs
diff --git a/src/Http/Http.Features/src/FeatureReferences.cs b/src/Http/Features/src/FeatureReferences.cs
similarity index 100%
rename from src/Http/Http.Features/src/FeatureReferences.cs
rename to src/Http/Features/src/FeatureReferences.cs
diff --git a/src/Http/Http.Features/src/IFeatureCollection.cs b/src/Http/Features/src/IFeatureCollection.cs
similarity index 100%
rename from src/Http/Http.Features/src/IFeatureCollection.cs
rename to src/Http/Features/src/IFeatureCollection.cs
diff --git a/src/Http/Features/src/Microsoft.Extensions.Features.csproj b/src/Http/Features/src/Microsoft.Extensions.Features.csproj
new file mode 100644
index 000000000000..695dcb3b3006
--- /dev/null
+++ b/src/Http/Features/src/Microsoft.Extensions.Features.csproj
@@ -0,0 +1,18 @@
+
+
+
+ Provides abstractions for a loosly coupled collection of features.
+
+Commonly Used Types:
+Microsoft.AspNetCore.Http.Features.IFeatureCollection
+Microsoft.AspNetCore.Http.Features.FeatureCollection
+
+ $(DefaultNetFxTargetFramework);netstandard2.0;$(DefaultNetCoreTargetFramework)
+ $(DefaultNetCoreTargetFramework)
+ true
+ true
+ aspnetcore
+ enable
+
+
+
diff --git a/src/Http/Features/src/PublicAPI.Shipped.txt b/src/Http/Features/src/PublicAPI.Shipped.txt
new file mode 100644
index 000000000000..074c6ad103bd
--- /dev/null
+++ b/src/Http/Features/src/PublicAPI.Shipped.txt
@@ -0,0 +1,2 @@
+#nullable enable
+
diff --git a/src/Http/Features/src/PublicAPI.Unshipped.txt b/src/Http/Features/src/PublicAPI.Unshipped.txt
new file mode 100644
index 000000000000..b87db9d9c84e
--- /dev/null
+++ b/src/Http/Features/src/PublicAPI.Unshipped.txt
@@ -0,0 +1,32 @@
+#nullable enable
+Microsoft.AspNetCore.Http.Features.FeatureCollection
+Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection() -> void
+Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection(Microsoft.AspNetCore.Http.Features.IFeatureCollection! defaults) -> void
+Microsoft.AspNetCore.Http.Features.FeatureCollection.Get() -> TFeature?
+Microsoft.AspNetCore.Http.Features.FeatureCollection.GetEnumerator() -> System.Collections.Generic.IEnumerator>!
+Microsoft.AspNetCore.Http.Features.FeatureCollection.IsReadOnly.get -> bool
+Microsoft.AspNetCore.Http.Features.FeatureCollection.Set(TFeature? instance) -> void
+Microsoft.AspNetCore.Http.Features.FeatureCollection.this[System.Type! key].get -> object?
+Microsoft.AspNetCore.Http.Features.FeatureCollection.this[System.Type! key].set -> void
+Microsoft.AspNetCore.Http.Features.FeatureReference
+Microsoft.AspNetCore.Http.Features.FeatureReference.Fetch(Microsoft.AspNetCore.Http.Features.IFeatureCollection! features) -> T?
+Microsoft.AspNetCore.Http.Features.FeatureReference.Update(Microsoft.AspNetCore.Http.Features.IFeatureCollection! features, T feature) -> T
+Microsoft.AspNetCore.Http.Features.FeatureReferences
+Microsoft.AspNetCore.Http.Features.FeatureReferences.Cache -> TCache?
+Microsoft.AspNetCore.Http.Features.FeatureReferences.Collection.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection!
+Microsoft.AspNetCore.Http.Features.FeatureReferences.FeatureReferences(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection) -> void
+Microsoft.AspNetCore.Http.Features.FeatureReferences.Fetch(ref TFeature? cached, TState state, System.Func! factory) -> TFeature?
+Microsoft.AspNetCore.Http.Features.FeatureReferences.Fetch(ref TFeature? cached, System.Func! factory) -> TFeature?
+Microsoft.AspNetCore.Http.Features.FeatureReferences.Initalize(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection) -> void
+Microsoft.AspNetCore.Http.Features.FeatureReferences.Initalize(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection, int revision) -> void
+Microsoft.AspNetCore.Http.Features.FeatureReferences.Revision.get -> int
+Microsoft.AspNetCore.Http.Features.IFeatureCollection
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.Get() -> TFeature?
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.IsReadOnly.get -> bool
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.Revision.get -> int
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.Set(TFeature? instance) -> void
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[System.Type! key].get -> object?
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[System.Type! key].set -> void
+Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection(int initialCapacity) -> void
+static readonly Microsoft.AspNetCore.Http.Features.FeatureReference.Default -> Microsoft.AspNetCore.Http.Features.FeatureReference
+virtual Microsoft.AspNetCore.Http.Features.FeatureCollection.Revision.get -> int
diff --git a/src/Http/Http.Features/test/FeatureCollectionTests.cs b/src/Http/Features/test/FeatureCollectionTests.cs
similarity index 100%
rename from src/Http/Http.Features/test/FeatureCollectionTests.cs
rename to src/Http/Features/test/FeatureCollectionTests.cs
diff --git a/src/Http/Http.Features/test/IThing.cs b/src/Http/Features/test/IThing.cs
similarity index 100%
rename from src/Http/Http.Features/test/IThing.cs
rename to src/Http/Features/test/IThing.cs
diff --git a/src/Http/Http.Features/test/Microsoft.AspNetCore.Http.Features.Tests.csproj b/src/Http/Features/test/Microsoft.Extensions.Features.Tests.csproj
similarity index 79%
rename from src/Http/Http.Features/test/Microsoft.AspNetCore.Http.Features.Tests.csproj
rename to src/Http/Features/test/Microsoft.Extensions.Features.Tests.csproj
index d3e0be0991fe..98da0254666e 100644
--- a/src/Http/Http.Features/test/Microsoft.AspNetCore.Http.Features.Tests.csproj
+++ b/src/Http/Features/test/Microsoft.Extensions.Features.Tests.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Http/Http.Features/test/Thing.cs b/src/Http/Features/test/Thing.cs
similarity index 100%
rename from src/Http/Http.Features/test/Thing.cs
rename to src/Http/Features/test/Thing.cs
diff --git a/src/Http/Http.Features/src/IResponseCookies.cs b/src/Http/Http.Features/src/IResponseCookies.cs
index b41153d131a0..6f09401d8d89 100644
--- a/src/Http/Http.Features/src/IResponseCookies.cs
+++ b/src/Http/Http.Features/src/IResponseCookies.cs
@@ -1,10 +1,8 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#if NET6_0_OR_GREATER
using System;
using System.Collections.Generic;
-#endif
namespace Microsoft.AspNetCore.Http
{
@@ -28,7 +26,6 @@ public interface IResponseCookies
/// included in the new cookie setting.
void Append(string key, string value, CookieOptions options);
-#if NET6_0_OR_GREATER
///
/// Add elements of specified collection as cookies.
///
@@ -41,7 +38,6 @@ void Append(ReadOnlySpan> keyValuePairs, CookieOpti
Append(keyValuePair.Key, keyValuePair.Value, options);
}
}
-#endif
///
/// Sets an expired cookie.
diff --git a/src/Http/Http.Features/src/Microsoft.AspNetCore.Http.Features.csproj b/src/Http/Http.Features/src/Microsoft.AspNetCore.Http.Features.csproj
index 7aad17f6cd07..e99431c56d8a 100644
--- a/src/Http/Http.Features/src/Microsoft.AspNetCore.Http.Features.csproj
+++ b/src/Http/Http.Features/src/Microsoft.AspNetCore.Http.Features.csproj
@@ -1,23 +1,19 @@
-
+
ASP.NET Core HTTP feature interface definitions.
- $(DefaultNetFxTargetFramework);netstandard2.0;$(DefaultNetCoreTargetFramework)
- $(DefaultNetCoreTargetFramework)
+ $(DefaultNetCoreTargetFramework)
true
true
aspnetcore
+ false
enable
+
-
-
-
-
-
diff --git a/src/Http/Http.Features/src/Properties/AssemblyInfo.cs b/src/Http/Http.Features/src/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000000..43fe8a8367f6
--- /dev/null
+++ b/src/Http/Http.Features/src/Properties/AssemblyInfo.cs
@@ -0,0 +1,10 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Runtime.CompilerServices;
+using Microsoft.AspNetCore.Http.Features;
+
+[assembly: TypeForwardedTo(typeof(IFeatureCollection))]
+[assembly: TypeForwardedTo(typeof(FeatureCollection))]
+[assembly: TypeForwardedTo(typeof(FeatureReference<>))]
+[assembly: TypeForwardedTo(typeof(FeatureReferences<>))]
diff --git a/src/Http/Http.Features/src/PublicAPI/net461/PublicAPI.Shipped.txt b/src/Http/Http.Features/src/PublicAPI.Shipped.txt
similarity index 100%
rename from src/Http/Http.Features/src/PublicAPI/net461/PublicAPI.Shipped.txt
rename to src/Http/Http.Features/src/PublicAPI.Shipped.txt
diff --git a/src/Http/Http.Features/src/PublicAPI.Unshipped.txt b/src/Http/Http.Features/src/PublicAPI.Unshipped.txt
new file mode 100644
index 000000000000..96694545899d
--- /dev/null
+++ b/src/Http/Http.Features/src/PublicAPI.Unshipped.txt
@@ -0,0 +1,61 @@
+#nullable enable
+*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature
+*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature.DisableRequestBuffering() -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature.DisableResponseBuffering() -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpSendFileFeature
+*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpSendFileFeature.SendFileAsync(string! path, long offset, long? count, System.Threading.CancellationToken cancellation) -> System.Threading.Tasks.Task!
+*REMOVED*Microsoft.AspNetCore.Http.Features.IServerVariablesFeature.this[string! variableName].get -> string!
+*REMOVED*Microsoft.AspNetCore.Http.ISession.TryGetValue(string! key, out byte[]! value) -> bool
+*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection
+*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection.Get() -> TFeature
+*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection.IsReadOnly.get -> bool
+*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection.Revision.get -> int
+*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection.Set(TFeature instance) -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[System.Type! key].get -> object?
+*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[System.Type! key].set -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection() -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection(Microsoft.AspNetCore.Http.Features.IFeatureCollection! defaults) -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.Get() -> TFeature?
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.GetEnumerator() -> System.Collections.Generic.IEnumerator>!
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.IsReadOnly.get -> bool
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.Set(TFeature instance) -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.this[System.Type! key].get -> object?
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.this[System.Type! key].set -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReference
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReference.Fetch(Microsoft.AspNetCore.Http.Features.IFeatureCollection! features) -> T?
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReference.Update(Microsoft.AspNetCore.Http.Features.IFeatureCollection! features, T feature) -> T
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences.Cache -> TCache?
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences.Collection.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection!
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences.FeatureReferences(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection) -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences.Fetch(ref TFeature? cached, TState state, System.Func! factory) -> TFeature?
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences.Fetch(ref TFeature? cached, System.Func! factory) -> TFeature?
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences.Initalize(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection) -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences.Initalize(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection, int revision) -> void
+*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureReferences.Revision.get -> int
+*REMOVED*static readonly Microsoft.AspNetCore.Http.Features.FeatureReference.Default -> Microsoft.AspNetCore.Http.Features.FeatureReference
+*REMOVED*virtual Microsoft.AspNetCore.Http.Features.FeatureCollection.Revision.get -> int
+Microsoft.AspNetCore.Http.Features.IServerVariablesFeature.this[string! variableName].get -> string?
+Microsoft.AspNetCore.Http.ISession.TryGetValue(string! key, out byte[]? value) -> bool
+Microsoft.AspNetCore.Http.IResponseCookies.Append(System.ReadOnlySpan> keyValuePairs, Microsoft.AspNetCore.Http.CookieOptions! options) -> void
+Microsoft.AspNetCore.Http.Features.IFeatureCollection (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.Get() -> TFeature? (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.IsReadOnly.get -> bool (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.Revision.get -> int (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.Set(TFeature? instance) -> void (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[System.Type! key].get -> object? (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[System.Type! key].set -> void (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection(int initialCapacity) -> void (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection() -> void (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection(Microsoft.AspNetCore.Http.Features.IFeatureCollection! defaults) -> void (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.Get() -> TFeature? (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.GetEnumerator() -> System.Collections.Generic.IEnumerator>! (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.IsReadOnly.get -> bool (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.Set(TFeature? instance) -> void (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.this[System.Type! key].get -> object? (forwarded, contained in Microsoft.Extensions.Features)
+Microsoft.AspNetCore.Http.Features.FeatureCollection.this[System.Type! key].set -> void (forwarded, contained in Microsoft.Extensions.Features)
+virtual Microsoft.AspNetCore.Http.Features.FeatureCollection.Revision.get -> int (forwarded, contained in Microsoft.Extensions.Features)
+~Microsoft.AspNetCore.Http.Features.FeatureReference<> (forwarded, contained in Microsoft.Extensions.Features)
+~Microsoft.AspNetCore.Http.Features.FeatureReferences<> (forwarded, contained in Microsoft.Extensions.Features)
diff --git a/src/Http/Http.Features/src/PublicAPI/net461/PublicAPI.Unshipped.txt b/src/Http/Http.Features/src/PublicAPI/net461/PublicAPI.Unshipped.txt
deleted file mode 100644
index 4cc6095ff65a..000000000000
--- a/src/Http/Http.Features/src/PublicAPI/net461/PublicAPI.Unshipped.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-#nullable enable
-*REMOVED*Microsoft.AspNetCore.Http.Features.FeatureCollection.Set(TFeature instance) -> void
-*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection.Get() -> TFeature
-*REMOVED*Microsoft.AspNetCore.Http.Features.IFeatureCollection.Set(TFeature instance) -> void
-*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature
-*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature.DisableRequestBuffering() -> void
-*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature.DisableResponseBuffering() -> void
-*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpSendFileFeature
-*REMOVED*Microsoft.AspNetCore.Http.Features.IHttpSendFileFeature.SendFileAsync(string! path, long offset, long? count, System.Threading.CancellationToken cancellation) -> System.Threading.Tasks.Task!
-*REMOVED*Microsoft.AspNetCore.Http.Features.IServerVariablesFeature.this[string! variableName].get -> string!
-*REMOVED*Microsoft.AspNetCore.Http.ISession.TryGetValue(string! key, out byte[]! value) -> bool
-Microsoft.AspNetCore.Http.Features.FeatureCollection.Set(TFeature? instance) -> void
-Microsoft.AspNetCore.Http.Features.IFeatureCollection.Get() -> TFeature?
-Microsoft.AspNetCore.Http.Features.IFeatureCollection.Set(TFeature? instance) -> void
-Microsoft.AspNetCore.Http.Features.IServerVariablesFeature.this[string! variableName].get -> string?
-Microsoft.AspNetCore.Http.ISession.TryGetValue(string! key, out byte[]? value) -> bool
-Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection(int initialCapacity) -> void
diff --git a/src/Http/Http.Features/src/PublicAPI/net6.0/PublicAPI.Shipped.txt b/src/Http/Http.Features/src/PublicAPI/net6.0/PublicAPI.Shipped.txt
deleted file mode 100644
index f97bf2426e2e..000000000000
--- a/src/Http/Http.Features/src/PublicAPI/net6.0/PublicAPI.Shipped.txt
+++ /dev/null
@@ -1,247 +0,0 @@
-#nullable enable
-Microsoft.AspNetCore.Http.CookieOptions
-Microsoft.AspNetCore.Http.CookieOptions.CookieOptions() -> void
-Microsoft.AspNetCore.Http.CookieOptions.Domain.get -> string?
-Microsoft.AspNetCore.Http.CookieOptions.Domain.set -> void
-Microsoft.AspNetCore.Http.CookieOptions.Expires.get -> System.DateTimeOffset?
-Microsoft.AspNetCore.Http.CookieOptions.Expires.set -> void
-Microsoft.AspNetCore.Http.CookieOptions.HttpOnly.get -> bool
-Microsoft.AspNetCore.Http.CookieOptions.HttpOnly.set -> void
-Microsoft.AspNetCore.Http.CookieOptions.IsEssential.get -> bool
-Microsoft.AspNetCore.Http.CookieOptions.IsEssential.set -> void
-Microsoft.AspNetCore.Http.CookieOptions.MaxAge.get -> System.TimeSpan?
-Microsoft.AspNetCore.Http.CookieOptions.MaxAge.set -> void
-Microsoft.AspNetCore.Http.CookieOptions.Path.get -> string?
-Microsoft.AspNetCore.Http.CookieOptions.Path.set -> void
-Microsoft.AspNetCore.Http.CookieOptions.SameSite.get -> Microsoft.AspNetCore.Http.SameSiteMode
-Microsoft.AspNetCore.Http.CookieOptions.SameSite.set -> void
-Microsoft.AspNetCore.Http.CookieOptions.Secure.get -> bool
-Microsoft.AspNetCore.Http.CookieOptions.Secure.set -> void
-Microsoft.AspNetCore.Http.Features.Authentication.IHttpAuthenticationFeature
-Microsoft.AspNetCore.Http.Features.Authentication.IHttpAuthenticationFeature.User.get -> System.Security.Claims.ClaimsPrincipal?
-Microsoft.AspNetCore.Http.Features.Authentication.IHttpAuthenticationFeature.User.set -> void
-Microsoft.AspNetCore.Http.Features.FeatureCollection
-Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection() -> void
-Microsoft.AspNetCore.Http.Features.FeatureCollection.FeatureCollection(Microsoft.AspNetCore.Http.Features.IFeatureCollection! defaults) -> void
-Microsoft.AspNetCore.Http.Features.FeatureCollection.Get() -> TFeature?
-Microsoft.AspNetCore.Http.Features.FeatureCollection.GetEnumerator() -> System.Collections.Generic.IEnumerator>!
-Microsoft.AspNetCore.Http.Features.FeatureCollection.IsReadOnly.get -> bool
-Microsoft.AspNetCore.Http.Features.FeatureCollection.Set(TFeature instance) -> void
-Microsoft.AspNetCore.Http.Features.FeatureCollection.this[System.Type! key].get -> object?
-Microsoft.AspNetCore.Http.Features.FeatureCollection.this[System.Type! key].set -> void
-Microsoft.AspNetCore.Http.Features.FeatureReference
-Microsoft.AspNetCore.Http.Features.FeatureReference.Fetch(Microsoft.AspNetCore.Http.Features.IFeatureCollection! features) -> T?
-Microsoft.AspNetCore.Http.Features.FeatureReference.Update(Microsoft.AspNetCore.Http.Features.IFeatureCollection! features, T feature) -> T
-Microsoft.AspNetCore.Http.Features.FeatureReferences
-Microsoft.AspNetCore.Http.Features.FeatureReferences.Cache -> TCache?
-Microsoft.AspNetCore.Http.Features.FeatureReferences.Collection.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection!
-Microsoft.AspNetCore.Http.Features.FeatureReferences.FeatureReferences(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection) -> void
-Microsoft.AspNetCore.Http.Features.FeatureReferences.Fetch(ref TFeature? cached, TState state, System.Func! factory) -> TFeature?
-Microsoft.AspNetCore.Http.Features.FeatureReferences.Fetch(ref TFeature? cached, System.Func! factory) -> TFeature?
-Microsoft.AspNetCore.Http.Features.FeatureReferences.Initalize(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection) -> void
-Microsoft.AspNetCore.Http.Features.FeatureReferences.Initalize(Microsoft.AspNetCore.Http.Features.IFeatureCollection! collection, int revision) -> void
-Microsoft.AspNetCore.Http.Features.FeatureReferences.Revision.get -> int
-Microsoft.AspNetCore.Http.Features.HttpsCompressionMode
-Microsoft.AspNetCore.Http.Features.HttpsCompressionMode.Compress = 2 -> Microsoft.AspNetCore.Http.Features.HttpsCompressionMode
-Microsoft.AspNetCore.Http.Features.HttpsCompressionMode.Default = 0 -> Microsoft.AspNetCore.Http.Features.HttpsCompressionMode
-Microsoft.AspNetCore.Http.Features.HttpsCompressionMode.DoNotCompress = 1 -> Microsoft.AspNetCore.Http.Features.HttpsCompressionMode
-Microsoft.AspNetCore.Http.Features.IFeatureCollection
-Microsoft.AspNetCore.Http.Features.IFeatureCollection.Get() -> TFeature
-Microsoft.AspNetCore.Http.Features.IFeatureCollection.IsReadOnly.get -> bool
-Microsoft.AspNetCore.Http.Features.IFeatureCollection.Revision.get -> int
-Microsoft.AspNetCore.Http.Features.IFeatureCollection.Set(TFeature instance) -> void
-Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[System.Type! key].get -> object?
-Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[System.Type! key].set -> void
-Microsoft.AspNetCore.Http.Features.IFormFeature
-Microsoft.AspNetCore.Http.Features.IFormFeature.Form.get -> Microsoft.AspNetCore.Http.IFormCollection?
-Microsoft.AspNetCore.Http.Features.IFormFeature.Form.set -> void
-Microsoft.AspNetCore.Http.Features.IFormFeature.HasFormContentType.get -> bool
-Microsoft.AspNetCore.Http.Features.IFormFeature.ReadForm() -> Microsoft.AspNetCore.Http.IFormCollection!
-Microsoft.AspNetCore.Http.Features.IFormFeature.ReadFormAsync(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.Features.IHttpBodyControlFeature
-Microsoft.AspNetCore.Http.Features.IHttpBodyControlFeature.AllowSynchronousIO.get -> bool
-Microsoft.AspNetCore.Http.Features.IHttpBodyControlFeature.AllowSynchronousIO.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature
-Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature.DisableRequestBuffering() -> void
-Microsoft.AspNetCore.Http.Features.IHttpBufferingFeature.DisableResponseBuffering() -> void
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.ConnectionId.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.ConnectionId.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.LocalIpAddress.get -> System.Net.IPAddress?
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.LocalIpAddress.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.LocalPort.get -> int
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.LocalPort.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.RemoteIpAddress.get -> System.Net.IPAddress?
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.RemoteIpAddress.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.RemotePort.get -> int
-Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.RemotePort.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature
-Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.IsReadOnly.get -> bool
-Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.MaxRequestBodySize.get -> long?
-Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.MaxRequestBodySize.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestBodyDetectionFeature
-Microsoft.AspNetCore.Http.Features.IHttpRequestBodyDetectionFeature.CanHaveBody.get -> bool
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Body.get -> System.IO.Stream!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Body.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Headers.get -> Microsoft.AspNetCore.Http.IHeaderDictionary!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Headers.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Method.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Method.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Path.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Path.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.PathBase.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.PathBase.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Protocol.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Protocol.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.QueryString.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.QueryString.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.RawTarget.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.RawTarget.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Scheme.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Scheme.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestIdentifierFeature
-Microsoft.AspNetCore.Http.Features.IHttpRequestIdentifierFeature.TraceIdentifier.get -> string!
-Microsoft.AspNetCore.Http.Features.IHttpRequestIdentifierFeature.TraceIdentifier.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestLifetimeFeature
-Microsoft.AspNetCore.Http.Features.IHttpRequestLifetimeFeature.Abort() -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestLifetimeFeature.RequestAborted.get -> System.Threading.CancellationToken
-Microsoft.AspNetCore.Http.Features.IHttpRequestLifetimeFeature.RequestAborted.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpRequestTrailersFeature
-Microsoft.AspNetCore.Http.Features.IHttpRequestTrailersFeature.Available.get -> bool
-Microsoft.AspNetCore.Http.Features.IHttpRequestTrailersFeature.Trailers.get -> Microsoft.AspNetCore.Http.IHeaderDictionary!
-Microsoft.AspNetCore.Http.Features.IHttpResetFeature
-Microsoft.AspNetCore.Http.Features.IHttpResetFeature.Reset(int errorCode) -> void
-Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature
-Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature.CompleteAsync() -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature.DisableBuffering() -> void
-Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature.SendFileAsync(string! path, long offset, long? count, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature.StartAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
-Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature.Stream.get -> System.IO.Stream!
-Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature.Writer.get -> System.IO.Pipelines.PipeWriter!
-Microsoft.AspNetCore.Http.Features.IHttpResponseFeature
-Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.Body.get -> System.IO.Stream!
-Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.Body.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.HasStarted.get -> bool
-Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.Headers.get -> Microsoft.AspNetCore.Http.IHeaderDictionary!
-Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.Headers.set -> void
-Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.OnCompleted(System.Func