Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Por Rick Anderson
O SetCompatibilityVersion método é um no-op para aplicativos ASP.NET Core 3.0. Ou seja, chamar SetCompatibilityVersion com qualquer valor de CompatibilityVersion não tem impacto no aplicativo.
- A próxima versão secundária do ASP.NET Core pode fornecer um novo
CompatibilityVersionvalor. -
CompatibilityVersionvaloresVersion_2_0atéVersion_2_2são marcados[Obsolete(...)]. - Consulte Alterações de API significativas em Antiforgery, CORS, Diagnósticos, MVC e Roteamento. Esta lista inclui alterações significativas para comutadores de compatibilidade.
Para ver como SetCompatibilityVersion funciona com aplicativos ASP.NET Core 2.x, selecione a versão ASP.NET Core 2.2 deste artigo.
O método SetCompatibilityVersion permite que uma aplicação ASP.NET Core 2.x adira ou desative as alterações de comportamento potencialmente disruptivas introduzidas no ASP.NET Core MVC 2.1 ou 2.2. Essas alterações de comportamento potencialmente disruptivas geralmente estão em como o subsistema MVC se comporta e como o seu código é invocado pelo runtime. Ao optar por participar, obtém o comportamento mais recente e o comportamento a longo prazo do ASP.NET Core.
O código a seguir define o modo de compatibilidade como ASP.NET Core 2.2:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Recomendamos que você teste seu aplicativo usando a versão mais recente (CompatibilityVersion.Latest). Prevemos que a maioria das aplicações não terá alterações significativas no comportamento com a utilização da versão mais recente.
As aplicações que chamam SetCompatibilityVersion(CompatibilityVersion.Version_2_0) estão protegidas contra alterações de comportamento potencialmente disruptivas introduzidas nas versões ASP.NET Core 2.1/2.2 MVC. Esta proteção:
- Não se aplica a todas as alterações da versão 2.1 ou posteriores; foca-se em mudanças que podem impactar potencialmente o comportamento de execução do ASP.NET Core no subsistema MVC.
- Não se estende ao ASP.NET Core 3.0.
A compatibilidade padrão para aplicativos ASP.NET Core 2.1 e 2.2 que não chamam SetCompatibilityVersion é a compatibilidade 2.0. Ou seja, não chamar SetCompatibilityVersion é o mesmo que chamar SetCompatibilityVersion(CompatibilityVersion.Version_2_0).
O código a seguir define o modo de compatibilidade como ASP.NET Core 2.2, exceto para os seguintes comportamentos:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
// Include the 2.2 behaviors
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
// Except for the following.
.AddMvcOptions(options =>
{
// Don't combine authorize filters (keep 2.0 behavior).
options.AllowCombiningAuthorizeFilters = false;
// All exceptions thrown by an IInputFormatter are treated
// as model state errors (keep 2.0 behavior).
options.InputFormatterExceptionPolicy =
InputFormatterExceptionPolicy.AllExceptions;
});
}
Para aplicações que se deparam com alterações significativas no comportamento, devem usar as opções de compatibilidade apropriadas.
- Permite que você use a versão mais recente e desative alterações específicas de comportamento de quebra.
- Dá-lhe tempo para atualizar a sua aplicação para que funcione com as alterações mais recentes.
A MvcOptions documentação tem uma boa explicação do que mudou e por que as alterações são uma melhoria para a maioria dos usuários.
Com o ASP.NET Core 3.0, comportamentos antigos suportados por switches de compatibilidade foram removidos. Sentimos que estas são mudanças positivas que beneficiam quase todos os utilizadores. Ao introduzir essas alterações na versão 2.1 e 2.2, a maioria dos aplicativos pode se beneficiar, enquanto outros têm tempo para atualizar.