Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo explica como atualizar um ASP.NET Core existente no projeto .NET 7 para o .NET 8.
Pré-requisitos
Visual Studio 2022 com a carga de trabalho de ASP.NET e desenvolvimento web .
Atualize a versão do SDK do .NET em global.json
Se confiar num global.json ficheiro para direccionar uma versão específica do SDK do .NET, atualize a propriedade version para a versão do SDK do .NET 8 instalada. Por exemplo:
{
"sdk": {
- "version": "7.0.100"
+ "version": "8.0.100"
}
}
Atualizar a estrutura de destino
Atualize o Target Framework Moniker (TFM) do arquivo de projeto para net8.0:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net7.0</TargetFramework>
+ <TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Atualizar referências de pacotes
No arquivo de projeto, atualize o atributo Microsoft.AspNetCore.* de cada referência de pacote Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*, System.Net.Http.Json e Version para 8.0.0 ou posterior. Por exemplo:
<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
Os seguintes cenários de migração são cobertos:
- Atualizar uma Blazor Server aplicação
- Adotar todas as Blazor Web App convenções
- Converter uma Blazor Server aplicação num Blazor Web App
- Atualizar uma Blazor WebAssembly aplicação
- Converter um aplicativo hospedado Blazor WebAssembly em um Blazor Web App
- Atualizar a configuração do serviço e do ponto final
- Rejeitar Blazor Server com solução de roteamento Yarp
-
Migrar
CascadingValuecomponentes em componentes de layout -
Migrar a
BlazorEnableCompressionpropriedade MSBuild -
Migrar o
<CascadingAuthenticationState>componente para serviços de estado de autenticação escalonados - Novo artigo: Problemas de cache HTTP durante a migração
- Novo artigo: Novo artigo sobre bibliotecas de classes com renderização estática do lado do servidor (SSR estático)
- Descubra componentes de montagens adicionais
-
Remover
[Parameter]atributo quando o parâmetro é fornecido a partir de um query string - Blazor Server Autorização da política de fallback de script
Para obter orientação sobre como adicionar Blazor suporte a um aplicativo ASP.NET Core, consulte Integrar componentes ASP.NET Core Razor com MVC ou Razor Pages.
Atualizar uma Blazor Server aplicação
Recomendamos usar Blazor Web Apps no .NET 8, mas Blazor Server é suportado. Para continuar usando Blazor Server o .NET 8, siga as orientações nas três primeiras seções deste artigo:
-
Atualize a versão do SDK do .NET em
global.json - Atualizar o framework de destino
- Atualizar referências de pacotes
Os novos Blazor recursos introduzidos para Blazor Web Apps não estão disponíveis para uma aplicação Blazor Server atualizada para correr sob o .NET 8. Se você deseja adotar os novos recursos do .NET 8 Blazor , siga as orientações em uma das seguintes seções:
Adotar todas as Blazor Web App convenções
Para adotar opcionalmente todas as novas Blazor Web App convenções, recomendamos o seguinte processo:
- Crie um novo aplicativo a partir do Blazor Web App modelo de projeto. Para obter mais informações, consulte Ferramentas para ASP.NET Core Blazor.
- Mova os componentes e o código do seu aplicativo para o novo Blazor Web App, fazendo modificações para adotar novos recursos.
- Atualize o layout e os estilos do Blazor Web App.
Os novos recursos do .NET 8 são abordados em Novidades no ASP.NET Core no .NET 8. Ao atualizar um aplicativo do .NET 6 ou anterior, consulte as notas de migração e versão (Artigos sobre o que há de novo) para as versões intermediárias.
Converter uma Blazor Server aplicação num Blazor Web App
Blazor Server os aplicativos são suportados no .NET 8 sem alterações de código. Use as diretrizes a seguir para converter um Blazor Server aplicativo em um .NET 8 Blazor Web Appequivalente, que disponibiliza todos os novos recursos do .NET 8 .
Importante
Esta seção se concentra nas alterações mínimas necessárias para converter um aplicativo .NET 7 Blazor Server em um .NET 8 Blazor Web App. Para adotar todas as novas Blazor Web App convenções, siga as orientações na seção Adotar todas as Blazor Web App convenções .
Siga as orientações nas três primeiras seções deste artigo:
Mova o conteúdo do componente
App(App.razor) para um novo ficheiro de componenteRoutes(Routes.razor) na pasta raiz do projeto. Deixe o arquivo vazioApp.razorno aplicativo na pasta raiz do projeto.Adicione uma entrada ao
_Imports.razorarquivo para disponibilizar modos de renderização abreviada para o aplicativo:@using static Microsoft.AspNetCore.Components.Web.RenderModeMova o conteúdo da
_Hostpágina (Pages/_Host.cshtml) para o arquivo vazioApp.razor. Proceda para fazer as seguintes alterações no componenteApp.Observação
No exemplo a seguir, o namespace do projeto é
BlazorServerApp. Ajuste o namespace para corresponder ao seu projeto.Remova as seguintes linhas da parte superior do ficheiro:
- @page "/" - @using Microsoft.AspNetCore.Components.Web - @namespace BlazorServerApp.Pages - @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpersSubstitua as linhas anteriores por uma linha que injeta uma IHostEnvironment instância:
@inject IHostEnvironment EnvRemova o til (~) do elemento
~da taghrefe substitua-o pelo caminho base do seu aplicativo:- <base href="~/" /> + <base href="/" />Remova o Helper de marca do componente HeadOutlet e substitua-o pelo componente HeadOutlet.
Remova a seguinte linha:
- <component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />Substitua a linha anterior pelo seguinte:
<HeadOutlet @rendermode="InteractiveServer" />Remova o Helper de marca do componente
Appe substitua-o pelo componenteRoutes.Remova a seguinte linha:
- <component type="typeof(App)" render-mode="ServerPrerendered" />Substitua a linha anterior pelo seguinte:
<Routes @rendermode="InteractiveServer" />Observação
A configuração anterior pressupõe que os componentes do aplicativo adotem a renderização interativa do servidor. Para obter mais informações, incluindo como adotar a renderização estática do lado do servidor (SSR), consulte ASP.NET Modos de renderização principaisBlazor.
Remova os "Tag Helpers" de Ambiente para a interface de utilizador de erro e substitua-os pela seguinte marcação Razor.
Remova as seguintes linhas:
- <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>Substitua as linhas anteriores pelo seguinte:
@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> }Altere o Blazor script de
blazor.server.jsparablazor.web.js:- <script src="_framework/blazor.server.js"></script> + <script src="_framework/blazor.web.js"></script>Exclua o
Pages/_Host.cshtmlarquivo.Atualização
Program.cs:Observação
No exemplo a seguir, o namespace do projeto é
BlazorServerApp. Ajuste o namespace para corresponder ao seu projeto.Adicione uma
usinginstrução à parte superior do arquivo para o namespace do projeto:using BlazorServerApp;Substitua AddServerSideBlazor por AddRazorComponents e faça uma chamada encadeada para AddInteractiveServerComponents.
Remova a seguinte linha:
- builder.Services.AddServerSideBlazor();Substitua a linha anterior por serviços de componentes Razor e serviços de componentes de servidor interativos. A chamada AddRazorComponents adiciona serviços antifalsificação (AddAntiforgery) por predefinição.
builder.Services.AddRazorComponents() .AddInteractiveServerComponents();Remova a seguinte linha:
- app.MapBlazorHub();Substitua a linha anterior por uma chamada para MapRazorComponents, fornecendo o
Appcomponente como o tipo de componente raiz e adicione uma chamada encadeada a:AddInteractiveServerRenderModeapp.MapRazorComponents<App>() .AddInteractiveServerRenderMode();Remova a seguinte linha:
- app.MapFallbackToPage("/_Host");Remova o middleware de roteamento:
- app.UseRouting();Adicionar Antiforgery Middleware ao pipeline de processamento de solicitações após a linha que adiciona HTTPS Redirection Middleware (
app.UseHttpsRedirection):app.UseAntiforgery();A chamada anterior para
app.UseAntiforgerydeve ser feita após chamadas, se houver, paraapp.UseAuthenticationeapp.UseAuthorization. Não há necessidade de adicionar explicitamente serviços antifalsificação (builder.Services.AddAntiforgery), pois eles são adicionados automaticamente pelo AddRazorComponents, que foi coberto anteriormente.Se a aplicação estiver configurada para desativar a pré-renderização, pode continuar a desativar a pré-renderização para a aplicação atualizada. No componente
App, altere o valor atribuído aos atributos da diretiva@rendermodeRazor para os componentes HeadOutlet eRoutes.Altere o valor do atributo da diretiva
@rendermodetanto para o componente HeadOutlet quanto para o componenteRoutespara desativar a prerenderização.- @rendermode="InteractiveServer" + @rendermode="new InteractiveServerRenderMode(prerender: false)"Para obter mais informações, consulte modos de renderização do ASP.NET Core Blazor.
Atualizar uma Blazor WebAssembly aplicação
Siga as orientações nas três primeiras seções deste artigo:
-
Atualize a versão do SDK do .NET em
global.json - Atualizar o framework de destino
- Atualizar referências de pacotes
Para aplicações que adotam carregamento lento de assembly, altere a extensão de ficheiro de .dll para .wasm na implementação da aplicação, refletindo a adoção do Blazor WebAssembly por .
Antes do lançamento do .NET 8, as diretrizes na configuração de implantação para aplicativos Blazor WebAssembly hospedados em ASP.NET Core tratam de ambientes que impedem os clientes de baixar e executar DLLs com uma abordagem de agregação de várias partes. No .NET 8 ou posterior, Blazor usa o formato de arquivo Webcil para resolver esse problema. O agrupamento multipartes usando o pacote NuGet experimental descrito no artigo sobre o layout de implantação do WebAssembly
Converter um aplicativo hospedado Blazor WebAssembly em um Blazor Web App
Blazor WebAssembly os aplicativos são suportados no .NET 8 sem alterações de código. Use as diretrizes a seguir para converter um aplicativo hospedado Blazor WebAssembly do ASP.NET Core em um .NET 8 Blazor Web Appequivalente, que disponibiliza todos os novos recursos do .NET 8 .
Importante
Esta seção se concentra nas alterações mínimas necessárias para converter um aplicativo hospedado Blazor WebAssembly no .NET 7 ASP.NET Core em um .NET 8 Blazor Web App. Para adotar todas as novas Blazor Web App convenções, siga as orientações na seção Adotar todas as Blazor Web App convenções .
Siga as orientações nas três primeiras seções deste artigo:
-
Atualize a versão do SDK do .NET em
global.json - Atualizar o framework de destino
- Atualizar referências de pacotes
Importante
Usando as diretrizes anteriores, atualize os projetos
.Client,.Servere.Sharedda solução.-
Atualize a versão do SDK do .NET em
No arquivo de
.Clientprojeto (.csproj), adicione as seguintes propriedades do MSBuild:<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile> <StaticWebAssetProjectMode>Default</StaticWebAssetProjectMode>Também no ficheiro de projeto
.Client, remova a referência de pacoteMicrosoft.AspNetCore.Components.WebAssembly.DevServer.- <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer"... />Mova o conteúdo do ficheiro
.Client/wwwroot/index.htmlpara um novo ficheiro de componenteApp(App.razor) criado na raiz do projeto.Server. Depois de mover o conteúdo do arquivo, exclua-oindex.html.Renomeie
App.razorno.Clientprojeto paraRoutes.razor.Em
Routes.razor, atualize o valor do atributoAppAssemblyparatypeof(Program).Assembly..ClientNo projeto, adicione uma entrada ao_Imports.razorarquivo para disponibilizar modos de renderização abreviada para o aplicativo:@using static Microsoft.AspNetCore.Components.Web.RenderModeFaça uma cópia do ficheiro do projeto
.Client_Imports.razore adicione-o ao projeto.Server.Faça as seguintes alterações no
App.razorarquivo:Substitua o título padrão do site (
<title>...</title>) por um HeadOutlet componente. Observe o título do site para uso posterior e remova as tags de título e o título:- <title>...</title>Onde você removeu o título, coloque um HeadOutlet componente atribuindo o modo de renderização Interactive WebAssembly (pré-renderização desabilitada):
<HeadOutlet @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" />Altere o pacote de estilo CSS:
- <link href="{CLIENT PROJECT ASSEMBLY NAME}.styles.css" rel="stylesheet"> + <link href="{SERVER PROJECT ASSEMBLY NAME}.styles.css" rel="stylesheet">Espaços reservados no código precedente:
-
{CLIENT PROJECT ASSEMBLY NAME}: Nome do assembly do projeto do cliente. Exemplo:BlazorSample.Client -
{SERVER PROJECT ASSEMBLY NAME}: Nome do assembly do projeto do servidor. Exemplo:BlazorSample.Server
Localize a seguinte
<div>...</div>marcação HTML:- <div id="app"> - ... - </div>Substitua a marcação HTML anterior
<div>...</div>peloRoutescomponente usando o modo de renderização Interactive WebAssembly (pré-renderização desabilitada):<Routes @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" />Atualize o
blazor.webassembly.jsscript parablazor.web.js:- <script src="_framework/blazor.webassembly.js"></script> + <script src="_framework/blazor.web.js"></script>-
Abra o
.Clientarquivo de layout do projeto (.Client/Shared/MainLayout.razor) e adicione um PageTitle componente com o título padrão do site ({TITLE}espaço reservado):<PageTitle>{TITLE}</PageTitle>Observação
Outros arquivos de layout também devem receber um PageTitle componente com o título padrão do site.
Para obter mais informações, consulte Controlar o conteúdo do cabeçote em aplicativos ASP.NET CoreBlazor.
Remova as seguintes linhas de
.Client/Program.cs:- builder.RootComponents.Add<App>("#app"); - builder.RootComponents.Add<HeadOutlet>("head::after");Atualização
.Server/Program.cs:Adicione o componente Razor e os serviços de componente WebAssembly interativo ao projeto. Ligue AddRazorComponents com uma chamada encadeada para AddInteractiveWebAssemblyComponents. A chamada AddRazorComponents adiciona serviços antifalsificação (AddAntiforgery) por predefinição.
builder.Services.AddRazorComponents() .AddInteractiveWebAssemblyComponents();Adicione o Antiforgery Middleware ao pipeline de processamento de solicitações.
Insira a linha a seguir após a chamada para
app.UseHttpsRedirection. A chamada paraapp.UseAntiforgerydeve ser feita após chamadas, se houver, paraapp.UseAuthenticationeapp.UseAuthorization. Não há necessidade de adicionar explicitamente serviços antifalsificação (builder.Services.AddAntiforgery), pois eles são adicionados automaticamente pelo AddRazorComponents, que foi coberto anteriormente.app.UseAntiforgery();Remova a seguinte linha:
- app.UseBlazorFrameworkFiles();Remova a seguinte linha:
- app.MapFallbackToFile("index.html");Substitua a linha anterior por uma chamada para MapRazorComponents, fornecendo o
Appcomponente como o tipo de componente raiz e adicione chamadas encadeadas para AddInteractiveWebAssemblyRenderMode e AddAdditionalAssemblies:app.MapRazorComponents<App>() .AddInteractiveWebAssemblyRenderMode() .AddAdditionalAssemblies(typeof({CLIENT APP NAMESPACE}._Imports).Assembly);No exemplo anterior, o
{CLIENT APP NAMESPACE}placeholder é o namespace do.Clientprojeto (por exemplo,HostedBlazorApp.Client).Execute a solução a partir do
.Serverprojeto:Para Visual Studio, confirme se o
.Serverprojeto está selecionado no Gerenciador de Soluções ao executar o aplicativo.Se estiver a utilizar a CLI do .NET, execute o projeto a partir do diretório da pasta do projeto
.Server.
Atualizar a configuração da opção de serviço e de endpoint
Com o lançamento de componentes no .NET 8, a configuração de opções de serviço e de ponto final é atualizada com a introdução de novas APIs para serviços de componentes interativos e configuração de ponto final de componentes.
As diretrizes de configuração atualizadas aparecem nos seguintes locais:
- Configuração e leitura do ambiente da aplicação: Contém orientações atualizadas, especialmente na seção intitulada Leitura do ambiente no lado do cliente num Blazor Web App ficheiro.
- Opções do manipulador de circuitos do lado do servidor: Abrange a configuração de novas opções de circuito e hub.
- Renderizar Razor componentes de JavaScript: Abrange a registo de componentes dinâmicos com RegisterForJavaScript.
-
Blazor elementos personalizados: Blazor Web App registo: Abrange o registo de elementos personalizados do componente raiz com
RegisterCustomElement. - Prefixo para Blazor WebAssembly ativos: abrange o controle da cadeia de caracteres de caminho que indica o prefixo para Blazor WebAssembly ativos.
- Duração da validade da URL de redirecionamento temporário: cobre o controle do tempo de vida da validade da proteção de dados para URLs de redirecionamento temporário emitidas pela Blazor renderização no servidor.
- Erros detalhados: Abrange a ativação de erros detalhados para a renderização do componente no lado do servidor.
- Configuração de pré-renderização: A pré-renderização está ativada por padrão para Blazor Web Apps. Siga este link para obter orientação sobre como desativar a pré-renderização se você tiver circunstâncias especiais que exijam que um aplicativo desabilite a pré-renderização.
- Opções de vinculação de formulário: Abrange a configuração de opções de vinculação de formulário.
Exclua Blazor Server com a solução alternativa de roteamento do Yarp
Se você seguiu anteriormente as orientações em Habilitar suporte ASP.NET Core Blazor Server com Yarp na migração incremental para migrar um Blazor Server aplicativo com Yarp para .NET 6 ou .NET 7, poderá reverter as etapas de solução alternativa que você tomou ao seguir as orientações do artigo. O roteamento e as ligações profundas para Blazor Server com Yarp funcionam corretamente no .NET 8.
Migrar CascadingValue componentes em componentes de layout
Os parâmetros em cascata não passam dados através dos limites do modo de renderização e os layouts são renderizados de forma estática em aplicações que de outra forma seriam interativas. Portanto, os aplicativos que procuram usar parâmetros em cascata em componentes renderizados interativamente não poderão cascatar os valores de um layout.
As duas abordagens em matéria de migração são as seguintes:
- (Recomendado) Passe o estado como um valor em cascata de nível raiz. Para obter mais informações, consulte as orientações sobre valores em cascata no nível raiz e valores em cascata no nível raiz com notificações.
- Envolva o roteador no componente
Routescom o componenteCascadingValuee torne o componenteRoutesinterativamente renderizado. Para obter um exemplo, consulteCascadingValuecomponente.
Para obter mais informações, consulte Valores/parâmetros em cascata e limites do modo de renderização.
Migrar a BlazorEnableCompression propriedade MSBuild
Para Blazor WebAssembly aplicações que desativam a compressão e visam o .NET 7 ou versões anteriores, mas são criadas com o SDK do .NET 8, a BlazorEnableCompression propriedade MSBuild foi alterada para CompressionEnabled:
<PropertyGroup>
- <BlazorEnableCompression>false</BlazorEnableCompression>
+ <CompressionEnabled>false</CompressionEnabled>
</PropertyGroup>
Ao usar o comando publish da .NET CLI, utilize a nova propriedade:
dotnet publish -p:CompressionEnabled=false
Para obter mais informações, consulte os seguintes recursos:
- Alteração Disruptiva na Indicação de Compressão de Ativos Web Estáticos (dotnet/anúncios #283)
- Alojar e publicar ASP.NET Core Blazor WebAssembly
Migrar o componente <CascadingAuthenticationState> para serviços em cascata de estado de autenticação
No .NET 7 ou anterior, o CascadingAuthenticationState componente é encapsulado em torno de alguma parte da árvore da interface do usuário, por exemplo, ao redor do Blazor roteador, para fornecer o estado de autenticação em cascata:
<CascadingAuthenticationState>
<Router ...>
...
</Router>
</CascadingAuthenticationState>
No .NET 8, não use o CascadingAuthenticationState componente:
- <CascadingAuthenticationState>
<Router ...>
...
</Router>
- </CascadingAuthenticationState>
Em vez disso, adicione serviços de estado de autenticação em série à coleção de serviços chamando AddCascadingAuthenticationState no arquivo Program.
builder.Services.AddCascadingAuthenticationState();
Para obter mais informações, consulte os seguintes recursos:
- Artigo de autenticação e autorização do ASP.NET Core Blazor
- Autenticação e autorização ASP.NET Core Blazor
Novo artigo sobre problemas de cache HTTP
Adicionamos um novo artigo que discute alguns dos problemas comuns de cache HTTP que podem ocorrer ao atualizar aplicativos Blazor nas principais versões e como resolver problemas de cache HTTP.
Para obter mais informações, consulte Evitar problemas de cache HTTP ao atualizar aplicativos ASP.NET Core Blazor.
Novo artigo sobre bibliotecas de classes com renderização estática do lado do servidor (SSR estático)
Adicionámos um novo artigo que discute a autoria de bibliotecas de componentes em bibliotecas de classes Razor (RCLs) com renderização estática do lado do servidor (SSR).
Para obter mais informações, consulte ASP.NET Core Razor bibliotecas de classes (RCLs) com renderização do lado do servidor estática (SSR estática).
Descubra componentes de montagens adicionais
Ao migrar de uma Blazor Server aplicação para um Blazor Web App, acede à orientação no encaminhamento ASP.NET Core Blazor se a aplicação usar componentes roteáveis de assemblies adicionais, como bibliotecas de classes de componentes.
Remover o atributo [Parameter] quando o parâmetro é fornecido a partir de uma cadeia de caracteres de consulta
O atributo [Parameter] não é mais necessário ao fornecer um parâmetro da cadeia de caracteres de consulta:
- [Parameter]
[SupplyParameterFromQuery]
Blazor Server Política de autorização de fallback de script
No .NET 7, o Blazor Server script (blazor.server.js) é servido pelo Static File Middleware. Colocar a chamada para o Middleware de Arquivo Estático (UseStaticFiles) no pipeline de processamento de solicitações antes da chamada para o Middleware de Autorização (UseAuthorization) é adequado em aplicações .NET 7 para disponibilizar o script Blazor a utilizadores anónimos.
No .NET 8, o Blazor Server script é servido por seu próprio ponto de extremidade, usando roteamento de ponto de extremidade. Esta alteração foi introduzida por Correção de erro - Passar opções para UseStaticFiles causa problemas Blazor Server (dotnet/aspnetcore #45897).
Considere um cenário multilocatário onde:
- As políticas padrão e de fallback são definidas de forma idêntica.
- O locatário é determinado usando o primeiro segmento no trajeto do pedido (por exemplo,
tld.com/tenant-name/...). - As solicitações para endpoints do locatário são autenticadas por um esquema de autenticação adicional, que acrescenta uma identidade extra à entidade da solicitação.
- A política de autorização de fallback tem requisitos que verificam as declarações por meio da identidade adicional.
As solicitações para o arquivo de script Blazor (blazor.server.js) são atendidas no /_framework/blazor.server.js, que é predefinido na estrutura. As solicitações para o arquivo não são autenticadas pelo esquema de autenticação adicional para locatários, mas ainda são desafiadas pela política de fallback, que resulta no retorno de um resultado não autorizado.
Esse problema está em avaliação para um novo recurso de estrutura no MapRazorComponents quebrado com FallbackPolicy RequireAuthenticatedUser (dotnet/aspnetcore 51836), que está atualmente programado para o lançamento do .NET 9 em novembro de 2024. Até lá, você pode contornar esse problema usando qualquer uma das três abordagens a seguir:
Não use uma política de fallback. Aplique o atributo
[Authorize]no arquivo_Imports.razorpara aplicá-lo a todos os componentes da aplicação. Para pontos de extremidade não-blazor, use explicitamente[Authorize]ouRequireAuthorization.Adicione
[AllowAnonymous]ao/_framework/blazor.server.jsendpoint noProgramficheiro:app.MapBlazorHub().Add(endpointBuilder => { if (endpointBuilder is RouteEndpointBuilder { RoutePattern: { RawText: "/_framework/blazor.server.js" } }) { endpointBuilder.Metadata.Add(new AllowAnonymousAttribute()); } });Registe um
AuthorizationHandlerpersonalizado que verifica oHttpContextpara permitir a passagem do ficheiro/_framework/blazor.server.js.
Docker
Atualizar imagens do Docker
Para aplicativos que usam o Docker, atualize as instruções e os scripts do DockerfileFROM . Use uma imagem base que inclua o tempo de execução do .NET 8. Considere a seguinte docker pull diferença de comando entre ASP.NET Core no .NET 7 e no .NET 8:
- docker pull mcr.microsoft.com/dotnet/aspnet:7.0
+ docker pull mcr.microsoft.com/dotnet/aspnet:8.0
Atualizar porta do Docker
A porta ASP.NET Core padrão configurada em imagens de contêiner .NET foi atualizada da porta 80 para 8080.
A nova ASPNETCORE_HTTP_PORTS variável de ambiente foi adicionada como uma alternativa mais simples ao ASPNETCORE_URLS.
Para obter mais informações, consulte:
- A porta ASP.NET Core padrão foi alterada de 80 para 8080.
-
Especificar portas apenas com
ASPNETCORE_HTTP_PORTS
Alterações de grande impacto
Use os artigos em Alterações significativas no .NET para encontrar alterações significativas que podem ser aplicadas ao atualizar um aplicativo para uma versão mais recente do .NET.