Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Anmärkning
På så sätt används System.Web Adapters för att förenkla migreringen.
I ASP.NET Framework-appen konfigurerar du <machineKey> och värden för System.Web-adaptrar så att båda apparna kan dela en kompatibel dataskyddskonfiguration. För fullständig bakgrund om att ersätta <machineKey>, se Ersätt ASP.NET machineKey i ASP.NET Core.
Den här vägledningen bygger på nätverkskortens System.Web värdmodell så att dataskyddstjänster registreras i di-containern (host dependency injection) och görs tillgängliga i hela ASP.NET Framework-appen. Genom att integrera med värd-DI som tillhandahålls av adaptrarna kan befintliga ASP.NET Framework-komponenter lösa IDataProtectionProvider, IDataProtector och relaterade typer.
Både ASP.NET Framework-appen och ASP.NET Core-appen måste använda ett delat programnamn och en nyckellagringsplats för dataskydd så att skyddade nyttolaster kan skickas mellan appar.
- Anropa
SetApplicationNamemed samma logiska programnamn i båda apparna (till exempel"my-app"). - Konfigurera
PersistKeysToFileSystemför att peka på samma nyckellagringsplats som båda apparna kan läsa och skriva.
Anmärkning
Katalogen som används med PersistKeysToFileSystem är lagringsplatsen för de delade dataskyddsnycklarna. I produktion använder du ett varaktigt, delat arkiv (till exempel en UNC-resurs, Redis eller Azure Blob Storage) och följer de viktigaste riktlinjerna för hantering i Konfigurera ASP.NET Core Data Protection och översikt över ASP.NET Core Data Protection.
Konfigurera ASP.NET Framework-appen
Om du vill implementera den här konfigurationen i ASP.NET Framework-appen kontrollerar du att Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices paketet är installerat i ASP.NET Framework-appen.
När du installerar Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices-paketet i en ASP.NET Framework-app, konfigureras <machineKey> normalt automatiskt. Om <machineKey> inte finns eller om du behöver verifiera inställningarna konfigurerar du i Web.config för att använda kompatibilitetsdataskyddet enligt följande:
<configuration>
<system.web>
<httpRuntime targetFramework="4.8.1" />
<machineKey
compatibilityMode="Framework45"
dataProtectorType="Microsoft.AspNetCore.DataProtection.SystemWeb.CompatibilityDataProtector,
Microsoft.AspNetCore.DataProtection.SystemWeb" />
</system.web>
</configuration>
I Global.asax.cs registrerar du sedan System.Web-adaptrarnas värd och konfigurerar dataskyddet med samma applikationsnamn och nyckellagringsplatsen som ASP.NET Core-appen kommer att använda. Följande exempel är anpassat från MachineKey Framework-exemplet:
using System.IO;
using System.Web;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.SystemWebAdapters.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace DataProtectionDemo
{
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
HttpApplicationHost.RegisterHost(builder =>
{
builder.AddServiceDefaults();
builder.AddDataProtection()
.SetApplicationName("my-app")
.PersistKeysToFileSystem(new DirectoryInfo(@"\\server\share\myapp-keys\"));
});
}
}
}
Den här konfigurationen:
- Anger ett delat programnamn (
my-app) som ASP.NET Core-appen också måste använda. - Konfigurerar en lagringsplats för delad nyckel (till exempel en UNC-resurs) som båda apparna kan komma åt.
- Säkerställer att
<machineKey>åtgärder (formulärautentisering, visningstillstånd ochMachineKey.Protectrelaterade API:er) dirigeras via ASP.NET Core-dataskydd. - Körs som en del av ASP.NET Framework-miljön så att befintliga funktioner baserade på
<machineKey>använder samma dataskyddssystemet som ASP.NET Core.
Konfigurera ASP.NET Core-appen
Ingen ytterligare konfiguration krävs för dataskydd i ASP.NET Core-appen. Konfigurera bara samma programnamn och nyckellagringsplats som ASP.NET Framework-appen använder.
using Microsoft.AspNetCore.DataProtection;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDataProtection()
.SetApplicationName(MachineKeyExampleHandler.AppName)
.PersistKeysToFileSystem(
new DirectoryInfo(Path.Combine(Path.GetTempPath(), "sharedkeys", MachineKeyExampleHandler.AppName)));
var app = builder.Build();
// Configure application
app.Run();
ASP.NET Core