Versão de compatibilidade do ASP.NET Core MVCCompatibility version for ASP.NET Core MVC

Por Rick AndersonBy Rick Anderson

O método SetCompatibilityVersion permite que um aplicativo aceite ou recuse as possíveis alterações da falha de comportamento introduzidas no ASP.NET Core MVC 2.1 ou posteriores.The SetCompatibilityVersion method allows an app to opt-in or opt-out of potentially breaking behavior changes introduced in ASP.NET Core MVC 2.1 or later. Essas possíveis alterações da falha de comportamento geralmente afetam como o subsistema MVC se comporta e como o código do usuário é chamado pelo tempo de execução.These potentially breaking behavior changes are generally in how the MVC subsystem behaves and how your code is called by the runtime. Ao aceitar, você obtém o comportamento mais recente e o comportamento de longo prazo do ASP.NET Core.By opting in, you get the latest behavior, and the long-term behavior of ASP.NET Core.

O código a seguir define o modo de compatibilidade para o ASP.NET Core 2.2:The following code sets the compatibility mode to ASP.NET Core 2.2:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

É recomendável que você teste seu aplicativo usando a versão mais recente (CompatibilityVersion.Version_2_2).We recommend you test your app using the latest version (CompatibilityVersion.Version_2_2). Estimamos que a maioria dos aplicativos não terão alterações da falha de comportamento usando a versão mais recente.We anticipate that most apps won't have breaking behavior changes using the latest version.

Os aplicativos que chamam SetCompatibilityVersion(CompatibilityVersion.Version_2_0) são protegidos contra as possíveis alterações da falha de comportamento apresentadas no ASP.NET Core 2.1 MVC e nas versões 2.x posteriores.Apps that call SetCompatibilityVersion(CompatibilityVersion.Version_2_0) are protected from potentially breaking behavior changes introduced in the ASP.NET Core 2.1 MVC and later 2.x versions. Essa proteção:This protection:

  • Não se aplica a todas as alterações da 2.1 e posteriores, ela é direcionada às possíveis alterações da falha de comportamento do tempo de execução do ASP.NET Core no subsistema de MVC.Does not apply to all 2.1 and later changes, it's targeted to potentially breaking ASP.NET Core runtime behavior changes in the MVC subsystem.
  • Não se estende à próxima versão principal.Does not extend to the next major version.

A compatibilidade padrão para aplicativos ASP.NET Core 2.1 e 2.x posteriores que não é chamada é a SetCompatibilityVersion compatibilidade 2.0.The default compatibility for ASP.NET Core 2.1 and later 2.x apps that do not call SetCompatibilityVersion is 2.0 compatibility. Ou seja, não chamar SetCompatibilityVersion é o mesmo que chamar SetCompatibilityVersion(CompatibilityVersion.Version_2_0).That is, not calling SetCompatibilityVersion is the same as calling SetCompatibilityVersion(CompatibilityVersion.Version_2_0).

O código a seguir define o modo de compatibilidade para o ASP.NET Core 2.2, exceto para os seguintes comportamentos:The following code sets the compatibility mode to ASP.NET Core 2.2, except for the following behaviors:

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 aplicativos que encontram alterações da falha de comportamento, o uso das opções de compatibilidade apropriadas:For apps that encounter breaking behavior changes, using the appropriate compatibility switches:

  • Permite que você use a versão mais recente e recuse alterações da falha de comportamento específicas.Allows you to use the latest release and opt out of specific breaking behavior changes.
  • Tenha tempo para atualizar seu aplicativo para que ele funcione com as alterações mais recentes.Gives you time to update your app so it works with the latest changes.

A documentação MvcOptions tem uma boa explicação sobre o que mudou e por que as alterações são uma melhoria para a maioria dos usuários.The MvcOptions documentation has a good explanation of what changed and why the changes are an improvement for most users.

Futuramente, haverá uma versão 3.0 do ASP.NET Core.At some future date, there will be an ASP.NET Core 3.0 version. Os comportamentos antigos compatíveis por meio de opções de compatibilidade serão removidos na versão 3.0.Old behaviors supported by compatibility switches will be removed in the 3.0 version. Consideramos que essas são alterações positivas que beneficiam quase todos os usuários.We feel these are positive changes benefitting nearly all users. Com a introdução dessas alterações, a maioria dos aplicativos poderá se beneficiar agora e os demais terão tempo para serem atualizados.By introducing these changes now, most apps can benefit now, and the others will have time to update their apps.