diff --git a/build/artifacts.props b/build/artifacts.props
index dbe6135b65..b69363a093 100644
--- a/build/artifacts.props
+++ b/build/artifacts.props
@@ -115,7 +115,6 @@
-
diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props
index 080f4c9659..c7d5ab8130 100644
--- a/eng/ProjectReferences.props
+++ b/eng/ProjectReferences.props
@@ -12,7 +12,6 @@
-
diff --git a/src/DataProtection/Abstractions/src/Microsoft.AspNetCore.DataProtection.Abstractions.csproj b/src/DataProtection/Abstractions/src/Microsoft.AspNetCore.DataProtection.Abstractions.csproj
index 021b3fde2c..2beeb5f0bb 100644
--- a/src/DataProtection/Abstractions/src/Microsoft.AspNetCore.DataProtection.Abstractions.csproj
+++ b/src/DataProtection/Abstractions/src/Microsoft.AspNetCore.DataProtection.Abstractions.csproj
@@ -5,7 +5,7 @@
Commonly used types:
Microsoft.AspNetCore.DataProtection.IDataProtectionProvider
Microsoft.AspNetCore.DataProtection.IDataProtector
- netstandard2.0
+ netcoreapp3.0
true
aspnetcore;dataprotection
diff --git a/src/DataProtection/Abstractions/test/Microsoft.AspNetCore.DataProtection.Abstractions.Tests.csproj b/src/DataProtection/Abstractions/test/Microsoft.AspNetCore.DataProtection.Abstractions.Tests.csproj
index 781387c466..0f17586d23 100644
--- a/src/DataProtection/Abstractions/test/Microsoft.AspNetCore.DataProtection.Abstractions.Tests.csproj
+++ b/src/DataProtection/Abstractions/test/Microsoft.AspNetCore.DataProtection.Abstractions.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
diff --git a/src/DataProtection/AzureKeyVault/src/Microsoft.AspNetCore.DataProtection.AzureKeyVault.csproj b/src/DataProtection/AzureKeyVault/src/Microsoft.AspNetCore.DataProtection.AzureKeyVault.csproj
index 42aa2edb13..58167df456 100644
--- a/src/DataProtection/AzureKeyVault/src/Microsoft.AspNetCore.DataProtection.AzureKeyVault.csproj
+++ b/src/DataProtection/AzureKeyVault/src/Microsoft.AspNetCore.DataProtection.AzureKeyVault.csproj
@@ -2,7 +2,7 @@
Microsoft Azure KeyVault key encryption support.
- netstandard2.0
+ netcoreapp3.0
true
aspnetcore;dataprotection;azure;keyvault
false
diff --git a/src/DataProtection/AzureKeyVault/test/Microsoft.AspNetCore.DataProtection.AzureKeyVault.Tests.csproj b/src/DataProtection/AzureKeyVault/test/Microsoft.AspNetCore.DataProtection.AzureKeyVault.Tests.csproj
index 879b9042a1..17b9fe4ac8 100644
--- a/src/DataProtection/AzureKeyVault/test/Microsoft.AspNetCore.DataProtection.AzureKeyVault.Tests.csproj
+++ b/src/DataProtection/AzureKeyVault/test/Microsoft.AspNetCore.DataProtection.AzureKeyVault.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
true
diff --git a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
index d65f55a425..d7042db87a 100644
--- a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
+++ b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
@@ -2,7 +2,7 @@
Microsoft Azure Blob storrage support as key store.
- netstandard2.0
+ netcoreapp3.0
true
true
aspnetcore;dataprotection;azure;blob
diff --git a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj
index f84e84974e..ed16b18390 100644
--- a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj
+++ b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
true
diff --git a/src/DataProtection/Cryptography.Internal/src/Microsoft.AspNetCore.Cryptography.Internal.csproj b/src/DataProtection/Cryptography.Internal/src/Microsoft.AspNetCore.Cryptography.Internal.csproj
index ff4ef3babe..9859f30a11 100644
--- a/src/DataProtection/Cryptography.Internal/src/Microsoft.AspNetCore.Cryptography.Internal.csproj
+++ b/src/DataProtection/Cryptography.Internal/src/Microsoft.AspNetCore.Cryptography.Internal.csproj
@@ -2,7 +2,7 @@
Infrastructure for ASP.NET Core cryptographic packages. Applications and libraries should not reference this package directly.
- netstandard2.0
+ netcoreapp3.0
$(NoWarn);CS1591
true
true
diff --git a/src/DataProtection/Cryptography.Internal/test/Microsoft.AspNetCore.Cryptography.Internal.Tests.csproj b/src/DataProtection/Cryptography.Internal/test/Microsoft.AspNetCore.Cryptography.Internal.Tests.csproj
index 29e8a7c294..1fa55228db 100644
--- a/src/DataProtection/Cryptography.Internal/test/Microsoft.AspNetCore.Cryptography.Internal.Tests.csproj
+++ b/src/DataProtection/Cryptography.Internal/test/Microsoft.AspNetCore.Cryptography.Internal.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
true
diff --git a/src/DataProtection/Cryptography.KeyDerivation/src/Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj b/src/DataProtection/Cryptography.KeyDerivation/src/Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj
index 3b869383e6..69982996dc 100644
--- a/src/DataProtection/Cryptography.KeyDerivation/src/Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj
+++ b/src/DataProtection/Cryptography.KeyDerivation/src/Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj
@@ -2,7 +2,7 @@
ASP.NET Core utilities for key derivation.
- netstandard2.0;netcoreapp3.0
+ netcoreapp3.0
true
true
aspnetcore;dataprotection
diff --git a/src/DataProtection/Cryptography.KeyDerivation/test/Microsoft.AspNetCore.Cryptography.KeyDerivation.Tests.csproj b/src/DataProtection/Cryptography.KeyDerivation/test/Microsoft.AspNetCore.Cryptography.KeyDerivation.Tests.csproj
index e7a1be7ece..5d3ff930af 100644
--- a/src/DataProtection/Cryptography.KeyDerivation/test/Microsoft.AspNetCore.Cryptography.KeyDerivation.Tests.csproj
+++ b/src/DataProtection/Cryptography.KeyDerivation/test/Microsoft.AspNetCore.Cryptography.KeyDerivation.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
true
diff --git a/src/DataProtection/DataProtection.sln b/src/DataProtection/DataProtection.sln
index 5300acb57a..48b89d6e00 100644
--- a/src/DataProtection/DataProtection.sln
+++ b/src/DataProtection/DataProtection.sln
@@ -65,8 +65,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NonDISample", "samples\NonD
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Redis", "samples\Redis\Redis.csproj", "{E578D5C2-76AD-4A9B-A4F0-3A74D7ACD98E}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SystemWeb", "SystemWeb", "{AA4BAE43-BD74-4292-8468-46F4DF60F9C7}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNetCore.DataProtection.SystemWeb", "SystemWeb\src\Microsoft.AspNetCore.DataProtection.SystemWeb.csproj", "{A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EntityFrameworkCore", "EntityFrameworkCore", "{64FD02D7-B6F4-4C77-A3F8-E6BD6404168E}"
@@ -352,18 +350,6 @@ Global
{E578D5C2-76AD-4A9B-A4F0-3A74D7ACD98E}.Release|x64.Build.0 = Release|Any CPU
{E578D5C2-76AD-4A9B-A4F0-3A74D7ACD98E}.Release|x86.ActiveCfg = Release|Any CPU
{E578D5C2-76AD-4A9B-A4F0-3A74D7ACD98E}.Release|x86.Build.0 = Release|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Debug|x64.Build.0 = Debug|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Debug|x86.Build.0 = Debug|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Release|Any CPU.Build.0 = Release|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Release|x64.ActiveCfg = Release|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Release|x64.Build.0 = Release|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Release|x86.ActiveCfg = Release|Any CPU
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7}.Release|x86.Build.0 = Release|Any CPU
{8A7D0D2D-A5F1-4DF7-BBAA-9A0EFDBB5224}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8A7D0D2D-A5F1-4DF7-BBAA-9A0EFDBB5224}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A7D0D2D-A5F1-4DF7-BBAA-9A0EFDBB5224}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -412,7 +398,6 @@ Global
{03406538-75CB-4655-B210-643FE11A2B00} = {9DF098B3-C8ED-471C-AE03-52E3196C1811}
{C5C425C8-5626-409B-9A81-4DC496CE41F4} = {9DF098B3-C8ED-471C-AE03-52E3196C1811}
{E578D5C2-76AD-4A9B-A4F0-3A74D7ACD98E} = {9DF098B3-C8ED-471C-AE03-52E3196C1811}
- {A65DAFB6-E03F-4140-892F-D7CA3B8D81D7} = {AA4BAE43-BD74-4292-8468-46F4DF60F9C7}
{8A7D0D2D-A5F1-4DF7-BBAA-9A0EFDBB5224} = {64FD02D7-B6F4-4C77-A3F8-E6BD6404168E}
{74CE0E8B-DE23-4B53-8D02-69D6FB849ADC} = {64FD02D7-B6F4-4C77-A3F8-E6BD6404168E}
EndGlobalSection
diff --git a/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj b/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj
index 18aa5ddc40..c843a00dd4 100644
--- a/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj
+++ b/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj
@@ -2,7 +2,7 @@
ASP.NET Core logic to protect and unprotect data, similar to DPAPI.
- netstandard2.0
+ netcoreapp3.0
$(NoWarn);CS1591
true
true
diff --git a/src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests.csproj b/src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests.csproj
index 3886642178..2dd82b92b4 100644
--- a/src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests.csproj
+++ b/src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
true
diff --git a/src/DataProtection/EntityFrameworkCore/src/Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.csproj b/src/DataProtection/EntityFrameworkCore/src/Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.csproj
index 85f5e47c55..f0713f0ecb 100644
--- a/src/DataProtection/EntityFrameworkCore/src/Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.csproj
+++ b/src/DataProtection/EntityFrameworkCore/src/Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.csproj
@@ -2,7 +2,7 @@
Support for storing keys using Entity Framework Core.
- netstandard2.0
+ netcoreapp3.0
true
true
aspnetcore;dataprotection;entityframeworkcore
diff --git a/src/DataProtection/EntityFrameworkCore/test/Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.Test.csproj b/src/DataProtection/EntityFrameworkCore/test/Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.Test.csproj
index f08eb96c9b..6d3e504879 100644
--- a/src/DataProtection/EntityFrameworkCore/test/Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.Test.csproj
+++ b/src/DataProtection/EntityFrameworkCore/test/Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.Test.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
diff --git a/src/DataProtection/Extensions/src/Microsoft.AspNetCore.DataProtection.Extensions.csproj b/src/DataProtection/Extensions/src/Microsoft.AspNetCore.DataProtection.Extensions.csproj
index c106a52961..7a4c008f78 100644
--- a/src/DataProtection/Extensions/src/Microsoft.AspNetCore.DataProtection.Extensions.csproj
+++ b/src/DataProtection/Extensions/src/Microsoft.AspNetCore.DataProtection.Extensions.csproj
@@ -2,7 +2,7 @@
Additional APIs for ASP.NET Core data protection.
- netstandard2.0
+ netcoreapp3.0
true
aspnetcore;dataprotection
diff --git a/src/DataProtection/Extensions/test/Microsoft.AspNetCore.DataProtection.Extensions.Tests.csproj b/src/DataProtection/Extensions/test/Microsoft.AspNetCore.DataProtection.Extensions.Tests.csproj
index 19284dddfd..1df9abdd17 100644
--- a/src/DataProtection/Extensions/test/Microsoft.AspNetCore.DataProtection.Extensions.Tests.csproj
+++ b/src/DataProtection/Extensions/test/Microsoft.AspNetCore.DataProtection.Extensions.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
diff --git a/src/DataProtection/StackExchangeRedis/src/Microsoft.AspNetCore.DataProtection.StackExchangeRedis.csproj b/src/DataProtection/StackExchangeRedis/src/Microsoft.AspNetCore.DataProtection.StackExchangeRedis.csproj
index 6e2143d602..a53d924f3c 100644
--- a/src/DataProtection/StackExchangeRedis/src/Microsoft.AspNetCore.DataProtection.StackExchangeRedis.csproj
+++ b/src/DataProtection/StackExchangeRedis/src/Microsoft.AspNetCore.DataProtection.StackExchangeRedis.csproj
@@ -2,7 +2,7 @@
Support for storing data protection keys in Redis.
- netstandard2.0
+ netcoreapp3.0
true
true
aspnetcore;dataprotection;redis
diff --git a/src/DataProtection/StackExchangeRedis/test/Microsoft.AspNetCore.DataProtection.StackExchangeRedis.Tests.csproj b/src/DataProtection/StackExchangeRedis/test/Microsoft.AspNetCore.DataProtection.StackExchangeRedis.Tests.csproj
index 964abdb650..ff9e397e77 100644
--- a/src/DataProtection/StackExchangeRedis/test/Microsoft.AspNetCore.DataProtection.StackExchangeRedis.Tests.csproj
+++ b/src/DataProtection/StackExchangeRedis/test/Microsoft.AspNetCore.DataProtection.StackExchangeRedis.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0;net461
+ netcoreapp3.0
diff --git a/src/DataProtection/SystemWeb/src/CompatibilityDataProtector.cs b/src/DataProtection/SystemWeb/src/CompatibilityDataProtector.cs
deleted file mode 100644
index 739afe83bd..0000000000
--- a/src/DataProtection/SystemWeb/src/CompatibilityDataProtector.cs
+++ /dev/null
@@ -1,133 +0,0 @@
-// 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;
-using System.ComponentModel;
-using System.Configuration;
-using System.Security.Cryptography;
-
-namespace Microsoft.AspNetCore.DataProtection.SystemWeb
-{
- ///
- /// A that can be used by ASP.NET 4.x to interact with ASP.NET Core's
- /// DataProtection stack. This type is for internal use only and shouldn't be directly used by
- /// developers.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public sealed class CompatibilityDataProtector : DataProtector
- {
- private static readonly Lazy _lazyProtectionProvider = new Lazy(CreateProtectionProvider);
-
- [ThreadStatic]
- private static bool _suppressPrimaryPurpose;
-
- private readonly Lazy _lazyProtector;
- private readonly Lazy _lazyProtectorSuppressedPrimaryPurpose;
-
- public CompatibilityDataProtector(string applicationName, string primaryPurpose, string[] specificPurposes)
- : base("application-name", "primary-purpose", null) // we feed dummy values to the base ctor
- {
- // We don't want to evaluate the IDataProtectionProvider factory quite yet,
- // as we'd rather defer failures to the call to Protect so that we can bubble
- // up a good error message to the developer.
-
- _lazyProtector = new Lazy(() => _lazyProtectionProvider.Value.CreateProtector(primaryPurpose, specificPurposes));
-
- // System.Web always provides "User.MachineKey.Protect" as the primary purpose for calls
- // to MachineKey.Protect. Only in this case should we allow suppressing the primary
- // purpose, as then we can easily map calls to MachineKey.Protect(userData, purposes)
- // into calls to provider.GetProtector(purposes).Protect(userData).
- if (primaryPurpose == "User.MachineKey.Protect")
- {
- _lazyProtectorSuppressedPrimaryPurpose = new Lazy(() => _lazyProtectionProvider.Value.CreateProtector(specificPurposes));
- }
- else
- {
- _lazyProtectorSuppressedPrimaryPurpose = _lazyProtector;
- }
- }
-
- // We take care of flowing purposes ourselves.
- protected override bool PrependHashedPurposeToPlaintext { get; } = false;
-
- // Retrieves the appropriate protector (potentially with a suppressed primary purpose) for this operation.
- private IDataProtector Protector => ((_suppressPrimaryPurpose) ? _lazyProtectorSuppressedPrimaryPurpose : _lazyProtector).Value;
-
- private static IDataProtectionProvider CreateProtectionProvider()
- {
- // Read from the startup type we need to use, then create it
- const string APPSETTINGS_KEY = "aspnet:dataProtectionStartupType";
- string startupTypeName = ConfigurationManager.AppSettings[APPSETTINGS_KEY];
- if (String.IsNullOrEmpty(startupTypeName))
- {
- // fall back to default startup type if one hasn't been specified in config
- startupTypeName = typeof(DataProtectionStartup).AssemblyQualifiedName;
- }
- Type startupType = Type.GetType(startupTypeName, throwOnError: true);
- var startupInstance = (DataProtectionStartup)Activator.CreateInstance(startupType);
-
- // Use it to initialize the system.
- return startupInstance.InternalConfigureServicesAndCreateProtectionProvider();
- }
-
- public override bool IsReprotectRequired(byte[] encryptedData)
- {
- // Nobody ever calls this.
- return false;
- }
-
- protected override byte[] ProviderProtect(byte[] userData)
- {
- try
- {
- return Protector.Protect(userData);
- }
- catch (Exception ex)
- {
- // System.Web special-cases ConfigurationException errors and allows them to bubble
- // up to the developer without being homogenized. Since a call to Protect should
- // never fail, any exceptions here really do imply a misconfiguration.
-
-#pragma warning disable CS0618 // Type or member is obsolete
- throw new ConfigurationException(Resources.DataProtector_ProtectFailed, ex);
-#pragma warning restore CS0618 // Type or member is obsolete
- }
- }
-
- protected override byte[] ProviderUnprotect(byte[] encryptedData)
- {
- return Protector.Unprotect(encryptedData);
- }
-
- ///
- /// Invokes a delegate where calls to
- /// and will ignore the primary
- /// purpose and instead use only the sub-purposes.
- ///
- public static byte[] RunWithSuppressedPrimaryPurpose(Func