Delen via


Migreren van ASP.NET Core in .NET 7 naar .NET 8

In dit artikel wordt uitgelegd hoe u een bestaand ASP.NET Core in .NET 7-project bijwerkt naar .NET 8.

Vereiste voorwaarden

De .NET SDK-versie bijwerken in global.json

Als u afhankelijk bent van een global.json bestand om een specifieke .NET Core SDK-versie te targeten, werkt u de version eigenschap bij naar de .NET 8 SDK-versie die is geïnstalleerd. Voorbeeld:

{
  "sdk": {
-    "version": "7.0.100"
+    "version": "8.0.100"
  }
}

Het doelframework bijwerken

Werk de Target Framework Moniker (TFM)- van het projectbestand bij naar net8.0:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
-    <TargetFramework>net7.0</TargetFramework>
+    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Pakketverwijzingen bijwerken

Werk in het projectbestand de Microsoft.AspNetCore.*-eigenschap bij van elke Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*, System.Net.Http.Json en Version pakketreferentie naar 8.0.0 of hoger. Voorbeeld:

<ItemGroup>
-   <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="7.0.12" />
-   <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.12" />
-   <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="7.0.0" />
-   <PackageReference Include="System.Net.Http.Json" Version="7.0.1" />
+   <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="8.0.0" />
+   <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.0" />
+   <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
+   <PackageReference Include="System.Net.Http.Json" Version="8.0.0" />
</ItemGroup>

Blazor

De volgende migratiescenario's worden behandeld:

Zie Blazor voor hulp bij het toevoegen Razor van ondersteuning aan een ASP.NET Core-app.

Een app bijwerken Blazor Server

Het wordt aanbevolen om Blazor Web App te gebruiken in .NET 8, maar Blazor Server wordt ook ondersteund. Als u Blazor Server wilt blijven gebruiken met .NET 8, volgt u de richtlijnen in de eerste drie afdelingen van dit artikel:

Nieuwe Blazor functies die zijn geïntroduceerd voor Blazor Web Apps, zijn niet beschikbaar voor een Blazor Server app die wordt bijgewerkt voor uitvoering onder .NET 8. Als u de nieuwe .NET 8-functies Blazor wilt gebruiken, volgt u de richtlijnen in een van de volgende secties:

Blazor Web App Alle conventies aannemen

Als u eventueel alle nieuwe Blazor Web App conventies wilt overnemen, raden we het volgende proces aan:

  • Maak een nieuwe app op basis van de Blazor Web App projectsjabloon. Zie Hulpprogramma's voor ASP.NET Core Blazorvoor meer informatie.
  • Verplaats de onderdelen en code van uw app naar de nieuwe Blazor Web Appen breng wijzigingen aan om nieuwe functies aan te passen.
  • Wijzig de indeling en stijlen van de Blazor Web App.

Nieuwe .NET 8-functies worden behandeld in wat er nieuw is in ASP.NET Core in .NET 8. Als u een app bijwerkt vanaf .NET 6 of eerder, raadpleegt u de migratie- en releaseopmerkingen (nieuwe artikelen) voor tussenliggende releases.

Blazor Server Een app converteren naar eenBlazor Web App

Blazor Server apps worden ondersteund in .NET 8 zonder codewijzigingen. Gebruik de volgende richtlijnen om een Blazor Server app te converteren naar een equivalente .NET 8 Blazor Web App, waardoor alle nieuwe .NET 8-functies beschikbaar zijn.

Belangrijk

Deze sectie is gericht op de minimale wijzigingen die nodig zijn om een .NET 7-app Blazor Server te converteren naar een .NET 8 Blazor Web App. Als u alle nieuwe Blazor Web App conventies wilt aannemen, volgt u de richtlijnen in de sectie Alle Blazor Web App conventies aannemen .

  1. Volg de richtlijnen in de eerste drie secties van dit artikel:

  2. Verplaats de inhoud van het App onderdeel (App.razor) naar een nieuw Routes onderdeelbestand (Routes.razor) dat is toegevoegd aan de hoofdmap van het project. Laat het lege App.razor bestand in de app in de hoofdmap van het project staan.

  3. Voeg een vermelding toe aan het _Imports.razor bestand om korte weergavemodi beschikbaar te maken voor de app:

    @using static Microsoft.AspNetCore.Components.Web.RenderMode
    
  4. Verplaats de inhoud op de _Host pagina (Pages/_Host.cshtml) naar het lege App.razor bestand. Ga verder met het aanbrengen van de volgende wijzigingen in het App onderdeel.

    Opmerking

    In het volgende voorbeeld is BlazorServerAppde naamruimte van het project. Pas de naamruimte aan zodat deze overeenkomt met uw project.

    Verwijder de volgende regels boven aan het bestand:

    - @page "/"
    - @using Microsoft.AspNetCore.Components.Web
    - @namespace BlazorServerApp.Pages
    - @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    

    Vervang de voorgaande regels door een regel die een IHostEnvironment exemplaar injecteert:

    @inject IHostEnvironment Env
    

    Verwijder de tilde (~) uit de href<base> tag en vervang deze door het basispad voor uw app:

    - <base href="~/" />
    + <base href="/" />
    

    Verwijder de Component Tag Helper voor het HeadOutlet onderdeel en vervang het door het HeadOutlet onderdeel.

    Verwijder de volgende regel:

    - <component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
    

    Vervang de voorgaande regel door het volgende:

    <HeadOutlet @rendermode="InteractiveServer" />
    

    Verwijder de Component Tag Helper voor het App onderdeel en vervang het door het Routes onderdeel.

    Verwijder de volgende regel:

    - <component type="typeof(App)" render-mode="ServerPrerendered" />
    

    Vervang de voorgaande regel door het volgende:

    <Routes @rendermode="InteractiveServer" />
    

    Opmerking

    In de voorgaande configuratie wordt ervan uitgegaan dat de onderdelen van de app interactieve serverweergave aannemen. Zie ASP.NET Core-rendermodi Blazorvoor meer informatie, waaronder het gebruik van statische SSR (Static Server Side Rendering).

    Verwijder de Environment Tag Helpers voor error gebruikersinterface en vervang deze door de volgende Razor markup.

    Verwijder de volgende regels:

    - <environment include="Staging,Production">
    -     An error has occurred. This application may no longer respond until reloaded.
    - </environment>
    - <environment include="Development">
    -     An unhandled exception has occurred. See browser dev tools for details.
    - </environment>
    

    Vervang de voorgaande regels door het volgende:

    @if (Env.IsDevelopment())
    {
        <text>
            An unhandled exception has occurred. See browser dev tools for details.
        </text>
    }
    else
    {
        <text>
            An error has occurred. This app may no longer respond until reloaded.
        </text>
    }
    

    Wijzig het Blazor script van blazor.server.js :blazor.web.js

    - <script src="_framework/blazor.server.js"></script>
    + <script src="_framework/blazor.web.js"></script>
    
  5. Verwijder het Pages/_Host.cshtml bestand.

  6. Program.csbijwerken:

    Opmerking

    In het volgende voorbeeld is BlazorServerAppde naamruimte van het project. Pas de naamruimte aan zodat deze overeenkomt met uw project.

    Voeg een using instructie toe aan het begin van het bestand voor de naamruimte van het project:

    using BlazorServerApp;
    

    Vervang AddServerSideBlazor door AddRazorComponents en een gechainede aanroep naar AddInteractiveServerComponents.

    Verwijder de volgende regel:

    - builder.Services.AddServerSideBlazor();
    

    Vervang de voorgaande regel door Razor onderdeel- en interactieve serveronderdeelservices. Aanroepen AddRazorComponents voegt standaard antivervalsingsservices (AddAntiforgery) toe.

    builder.Services.AddRazorComponents()
        .AddInteractiveServerComponents();
    

    Verwijder de volgende regel:

    - app.MapBlazorHub();
    

    Vervang de voorgaande regel door een aanroep aan MapRazorComponents, waarbij het App onderdeel wordt opgeven als het hoofdonderdeeltype en voeg een gekoppelde aanroep toe aan AddInteractiveServerRenderMode:

    app.MapRazorComponents<App>()
        .AddInteractiveServerRenderMode();
    

    Verwijder de volgende regel:

    - app.MapFallbackToPage("/_Host");
    

    Middleware voor routering verwijderen:

    - app.UseRouting();
    

    Voeg Antiforgery Middleware toe aan de aanvraagverwerkingspijplijn na de regel die HTTPS Redirection Middleware (app.UseHttpsRedirection) toevoegt:

    app.UseAntiforgery();
    

    De voorafgaande aanroep app.UseAntiforgery moet, indien aanwezig, worden geplaatst na de oproep aan app.UseAuthentication en app.UseAuthorization. Het is niet nodig om expliciet antivervalsingservices toe te voegen (builder.Services.AddAntiforgery), omdat ze automatisch worden toegevoegd door AddRazorComponents, wat eerder is besproken.

  7. Als de Blazor Server app is geconfigureerd om prerendering uit te schakelen, kunt u doorgaan met het uitschakelen van prerendering voor de bijgewerkte app. Wijzig in het App onderdeel de waarde die is toegewezen aan de @rendermodeRazor instructiekenmerken voor de HeadOutlet en Routes onderdelen.

    Wijzig de waarde van het @rendermode-instructiekenmerk voor zowel de HeadOutlet- als de Routes-componenten om prerendering uit te schakelen.

    - @rendermode="InteractiveServer"
    + @rendermode="new InteractiveServerRenderMode(prerender: false)"
    

    Zie ASP.NET Core-rendermodi Blazorvoor meer informatie.

Een app bijwerken Blazor WebAssembly

Volg de richtlijnen in de eerste drie secties van dit artikel:

Voor apps die lazy assembly lading gebruiken, verander de bestandsextensie van .dll naar .wasm in de implementatie van de app, zodat deze overeenkomt met Blazor WebAssembly's gebruik van Webcil assembly verpakking.

Voorafgaand aan de release van .NET 8, biedt de richtlijn in voor de implementatie-indeling van ASP.NET Core-gehoste Blazor WebAssembly-apps omgevingen een aanpak met meerdere bundelingen om te voorkomen dat clients DLL's kunnen downloaden en uitvoeren. In .NET 8 of hoger gebruikt Blazor de bestandsindeling webcil om dit probleem op te lossen. Bundeling met meerdere onderdelen met behulp van het experimentele NuGet-pakket dat wordt beschreven door de webassembly-implementatieindeling artikel wordt niet ondersteund voor Blazor-apps in .NET 8 of hoger. Als u het pakket met meerdere onderdelen in .NET 8 of hoger wilt blijven gebruiken, kunt u de richtlijnen in het artikel gebruiken om uw eigen bundelpakket met meerdere onderdelen te maken, maar dit wordt niet ondersteund door Microsoft.

Een gehoste Blazor WebAssembly app converteren naar een Blazor Web App

Blazor WebAssembly apps worden ondersteund in .NET 8 zonder codewijzigingen. Gebruik de volgende richtlijnen om een ASP.NET Core gehoste Blazor WebAssembly app te converteren naar een equivalente .NET 8 Blazor Web App, waardoor alle nieuwe .NET 8-functies beschikbaar zijn.

Belangrijk

Deze sectie is gericht op de minimale wijzigingen die nodig zijn om een .NET 7 ASP.NET Core gehoste Blazor WebAssembly app te converteren naar een .NET 8 Blazor Web App. Als u alle nieuwe Blazor Web App conventies wilt aannemen, volgt u de richtlijnen in de sectie Alle Blazor Web App conventies aannemen .

  1. Volg de richtlijnen in de eerste drie secties van dit artikel:

    Belangrijk

    Werk aan de hand van de voorgaande richtlijnen de .Client, .Serveren .Shared projecten van de oplossing bij.

  2. Voeg in het .Client projectbestand (.csproj) de volgende MSBuild-eigenschappen toe:

    <NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
    <StaticWebAssetProjectMode>Default</StaticWebAssetProjectMode>
    

    Verwijder ook in het .Client projectbestand de Microsoft.AspNetCore.Components.WebAssembly.DevServer pakketreferentie:

    - <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer"... />
    
  3. Verplaats de bestandsinhoud van het .Client/wwwroot/index.html bestand naar een nieuw App onderdeelbestand (App.razor) dat is gemaakt in de hoofdmap van het .Server project. Nadat u de inhoud van het bestand hebt verplaatst, verwijdert u het index.html bestand.

    Wijzig de naam App.razor in het .Client project in Routes.razor.

    Werk in Routes.razor de waarde van het AppAssembly-attribuut bij naar typeof(Program).Assembly.

  4. Voeg in het .Client project een vermelding toe aan het _Imports.razor bestand om shorthand rendermodi beschikbaar te maken voor de app:

    @using static Microsoft.AspNetCore.Components.Web.RenderMode
    

    Maak een kopie van het .Client projectbestand _Imports.razor en voeg het toe aan het .Server project.

  5. Breng de volgende wijzigingen aan in het App.razor bestand:

    Vervang de standaardtitel van de website (<title>...</title>) door een HeadOutlet onderdeel. Noteer de websitetitel voor later gebruik en verwijder de titeltags en titel:

    - <title>...</title>
    

    Wanneer u de titel hebt verwijderd, plaatst u een HeadOutlet onderdeel dat de weergavemodus Interactive WebAssembly toewijst (vooraf renderen uitgeschakeld):

    <HeadOutlet @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" />
    

    Wijzig de CSS-stijlbundel:

    - <link href="{CLIENT PROJECT ASSEMBLY NAME}.styles.css" rel="stylesheet">
    + <link href="{SERVER PROJECT ASSEMBLY NAME}.styles.css" rel="stylesheet">
    

    Plaatsaanduidingen in de voorgaande code:

    • {CLIENT PROJECT ASSEMBLY NAME}: Naam van clientprojectassembly. Voorbeeld: BlazorSample.Client
    • {SERVER PROJECT ASSEMBLY NAME}: Assemblynaam van het serverproject. Voorbeeld: BlazorSample.Server

    Zoek de volgende <div>...</div> HTML-markeringen:

    - <div id="app">
    -     ...
    - </div>
    

    Vervang de voorgaande <div>...</div> HTML-markering door het Routes onderdeel met behulp van de weergavemodus Interactive WebAssembly (vooraf renderen uitgeschakeld):

    <Routes @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" />
    

    Werk het blazor.webassembly.js script bij naar blazor.web.js:

    - <script src="_framework/blazor.webassembly.js"></script>
    + <script src="_framework/blazor.web.js"></script>
    
  6. Open het indelingsbestand van het .Client project (.Client/Shared/MainLayout.razor) en voeg een PageTitle onderdeel toe met de standaardtitel van de website ({TITLE} tijdelijke aanduiding):

    <PageTitle>{TITLE}</PageTitle>
    

    Opmerking

    Andere indelingsbestanden moeten ook een PageTitle onderdeel met de standaardwebsitetitel ontvangen.

    Zie Hoofdinhoud beheren in ASP.NET Core-apps Blazorvoor meer informatie.

  7. Verwijder de volgende regels uit .Client/Program.cs:

    - builder.RootComponents.Add<App>("#app");
    - builder.RootComponents.Add<HeadOutlet>("head::after");
    
  8. .Server/Program.csbijwerken:

    Voeg Razor-onderdeel en interactieve WebAssembly-componentservices toe aan het project. Roep AddRazorComponents aan met een gekoppelde aanroep naar AddInteractiveWebAssemblyComponents. Aanroepen AddRazorComponents voegt standaard antivervalsingsservices (AddAntiforgery) toe.

    builder.Services.AddRazorComponents()
        .AddInteractiveWebAssemblyComponents();
    

    Voeg Antiforgery Middleware toe aan de pijplijn voor aanvraagverwerking.

    Plaats de volgende regel na de aanroep naar app.UseHttpsRedirection. De oproep naar app.UseAntiforgery moet worden geplaatst na oproepen naar app.UseAuthentication en app.UseAuthorization, indien die aanwezig zijn. Het is niet nodig om expliciet antivervalsingservices toe te voegen (builder.Services.AddAntiforgery), omdat ze automatisch worden toegevoegd door AddRazorComponents, wat eerder is besproken.

    app.UseAntiforgery();
    

    Verwijder de volgende regel:

    - app.UseBlazorFrameworkFiles();
    

    Verwijder de volgende regel:

    - app.MapFallbackToFile("index.html");
    

    Vervang de voorgaande regel door een aanroep van MapRazorComponents, waarbij het App-onderdeel wordt doorgegeven als het hoofdonderdeeltype, en voeg gekoppelde aanroepen van AddInteractiveWebAssemblyRenderMode en AddAdditionalAssemblies toe.

    app.MapRazorComponents<App>()
        .AddInteractiveWebAssemblyRenderMode()
        .AddAdditionalAssemblies(typeof({CLIENT APP NAMESPACE}._Imports).Assembly);
    

    In het voorgaande voorbeeld is de {CLIENT APP NAMESPACE} placeholder de namespace van het .Client project (bijvoorbeeld HostedBlazorApp.Client).

  9. Voer de oplossing uit vanuit het .Server project:

    Controleer voor Visual Studio of het .Server project is geselecteerd in Solution Explorer bij het uitvoeren van de app.

    Als u de .NET CLI gebruikt, voert u het project uit vanuit de map van het .Server project.

Configuratie van service- en eindpuntopties bijwerken

Met de release van Blazor Web Apps in .NET 8 wordt de configuratie van Blazor service- en eindpuntopties bijgewerkt met de introductie van een nieuwe API voor interactieve componentservices en de configuratie van onderdeeleindpunten.

Bijgewerkte configuratierichtlijnen worden weergegeven op de volgende locaties:

Tijdelijke oplossing voor verwijderen Blazor Server met Yarp-routering

Als u eerder de richtlijnen inSchakelen ASP.NET Core-ondersteuning Blazor Server met Yarp in incrementele migratie hebt gevolgd voor het migreren van een Blazor Server app met Yarp naar .NET 6 of .NET 7, kunt u de tijdelijke stappen die u hebt uitgevoerd, omkeren wanneer u de richtlijnen van het artikel volgt. Routering en deep linking voor Blazor Server met Yarp werkt correct in .NET 8.

Migreer CascadingValue componenten binnen indelingscomponenten

Trapsgewijze parameters geven geen gegevens door over de grenzen van de rendermodus en indelingen worden statisch weergegeven in andere interactieve apps. Apps die trapsgewijze parameters in interactief gerenderde onderdelen willen gebruiken, kunnen daarom niet de waarden vanuit een lay-out doorgeven.

De twee benaderingen voor migratie zijn:

Zie Trapsgewijze waarden/parameters en weergavemodusgrenzen voor meer informatie.

De MSBuild-eigenschap BlazorEnableCompression migreren

Voor Blazor WebAssembly apps die compressie uitschakelen en zich richten op .NET 7 of eerder, maar zijn gebouwd met de .NET 8 SDK, is de BlazorEnableCompression eigenschap MSBuild gewijzigd in CompressionEnabled:

<PropertyGroup>
-   <BlazorEnableCompression>false</BlazorEnableCompression>
+   <CompressionEnabled>false</CompressionEnabled>
</PropertyGroup>

Wanneer u de .NET CLI-opdracht voor publiceren gebruikt, gebruikt u de nieuwe eigenschap:

dotnet publish -p:CompressionEnabled=false

Zie de volgende bronnen voor meer informatie:

Migreer het <CascadingAuthenticationState>-onderdeel naar trapsgewijze authenticatiestatusservices

In .NET 7 of eerder wordt het CascadingAuthenticationState onderdeel verpakt rond een deel van de UI-structuur, bijvoorbeeld rond de Blazor router, om trapsgewijze verificatiestatus te bieden:

<CascadingAuthenticationState>
    <Router ...>
        ...
    </Router>
</CascadingAuthenticationState>

In .NET 8, gebruik het CascadingAuthenticationState-onderdeel niet.

- <CascadingAuthenticationState>
      <Router ...>
          ...
      </Router>
- </CascadingAuthenticationState>

Voeg in plaats daarvan trapsgewijze verificatiestatusservices toe aan de serviceverzameling door het AddCascadingAuthenticationState bestand aan te roepenProgram:

builder.Services.AddCascadingAuthenticationState();

Zie de volgende bronnen voor meer informatie:

Nieuw artikel over problemen met HTTP-caching

We hebben een nieuw artikel toegevoegd waarin enkele veelvoorkomende http-cacheproblemen worden besproken die kunnen optreden bij het upgraden van Blazor apps in grote versies en het oplossen van problemen met HTTP-caching.

Zie Problemen met HTTP-caching voorkomen bij het upgraden van ASP.NET Core Blazor-appsvoor meer informatie.

Nieuw artikel over klassebibliotheken met statische server-side rendering (statische SSR)

We hebben een nieuw artikel toegevoegd waarin het auteurschap van componentenbibliotheken in klassebibliotheken van het type Razor (RCL's) met statische server-side rendering (statische SSR) wordt besproken.

Zie voor meer informatie ASP.NET Core Razor klassebibliotheken (RCL's) met statische server-side rendering (statische SSR).

Ontdekken van componenten uit extra assemblies

Wanneer u van een Blazor Server app naar een Blazor Web Appapp migreert, opent u de richtlijnen in ASP.NET Core-routering Blazor en -navigatie als de app routeerbare onderdelen van aanvullende assembly's gebruikt, zoals onderdelenklassebibliotheken.

Kenmerk [Parameter] verwijderen wanneer de parameter wordt opgegeven van een queryreeks

Het kenmerk [Parameter] is niet meer vereist bij het opgeven van een parameter uit de querytekenreeks:

- [Parameter]
  [SupplyParameterFromQuery]

Blazor Server autorisatie van scriptterugvalbeleid

In .NET 7 wordt het Blazor Server script (blazor.server.js) geleverd door Static Files Middleware. Het plaatsen van de aanroep voor Static Files Middleware (UseStaticFiles) in de aanvraagverwerkingspijplijn voordat de aanroep naar Authorization Middleware (UseAuthorization) voldoende is in .NET 7-apps om het Blazor script aan anonieme gebruikers te leveren.

In .NET 8 wordt het Blazor Server script geleverd door een eigen eindpunt, met behulp van eindpuntroutering. Deze wijziging wordt geïntroduceerd door een fout opgelost: opties doorgeven aan UseStaticFiles-einden Blazor Server (dotnet/aspnetcore #45897).

Overweeg een scenario met meerdere tenants waarbij:

  • Zowel het standaard- als het terugvalbeleid worden identiek ingesteld.
  • De tenant wordt opgelost met behulp van het eerste segment in het aanvraagpad (bijvoorbeeld tld.com/tenant-name/...).
  • Verzoeken aan tenant-eindpunten worden gevalideerd door een aanvullend authenticatiemechanisme, dat een extra identiteit toevoegt aan het verzoekprincipe.
  • Het terugval-autorisatiebeleid heeft vereisten die claims verifiëren via de extra identiteit.

Aanvragen voor het Blazor scriptbestand (blazor.server.js) worden verwerkt op /_framework/blazor.server.js, die in het framework is vastgelegd. Aanvragen voor het bestand worden niet geverifieerd door het aanvullende verificatieschema voor huurders, maar worden nog steeds uitgedaagd door het terugvalbeleid, wat resulteert in een niet-geautoriseerd resultaat.

Dit probleem wordt geëvalueerd voor een nieuwe frameworkfunctie in MapRazorComponents die is verbroken met FallbackPolicy RequireAuthenticatedUser (dotnet/aspnetcore 51836), dat momenteel gepland is voor de release van .NET 9 in november 2024. Tot die tijd kunt u dit probleem omzeilen met behulp van een van de volgende drie benaderingen:

  • Gebruik geen terugvalbeleid. Pas het [Authorize] kenmerk in het _Imports.razor bestand toe om het toe te passen op alle onderdelen van de app. Gebruik voor niet-blazor-eindpunten expliciet [Authorize] of RequireAuthorization.

  • Toevoegen [AllowAnonymous] aan het /_framework/blazor.server.js eindpunt in het Program bestand:

    app.MapBlazorHub().Add(endpointBuilder =>
    {
        if (endpointBuilder is 
            RouteEndpointBuilder
            { 
                RoutePattern: { RawText: "/_framework/blazor.server.js" }
            })
        {
            endpointBuilder.Metadata.Add(new AllowAnonymousAttribute());
        }
    });
    
  • Registreer een aangepaste AuthorizationHandler die controleert of de HttpContext het /_framework/blazor.server.js bestand toestaat.

Dokwerker

Docker-installatiekopieën bijwerken

Werk voor apps die Docker gebruiken de Dockerfile-instructiesFROM en -scripts bij. Gebruik een basisafbeelding die de .NET 8-runtime bevat. Houd rekening met het volgende docker pull opdrachtverschil tussen ASP.NET Core in .NET 7 en .NET 8:

- docker pull mcr.microsoft.com/dotnet/aspnet:7.0
+ docker pull mcr.microsoft.com/dotnet/aspnet:8.0

Docker-poort bijwerken

De standaardpoort ASP.NET Core die is geconfigureerd in .NET-containerinstallatiekopieën, is bijgewerkt van poort 80 naar 8080.

De nieuwe ASPNETCORE_HTTP_PORTS omgevingsvariabele is toegevoegd als een eenvoudiger alternatief voor ASPNETCORE_URLS.

Voor meer informatie, zie:

Brekende wijzigingen bekijken

Zie Belangrijke wijzigingen in .NET 8, inclusief ASP.NET Core - en Entity Framework Core-secties voor belangrijke wijzigingen van .NET 7 naar .NET 8.