Share via


Compatibilidade de diretiva de segurança de acesso e a migração de código

A parte da diretiva de segurança de acesso de código (CAS) se tornou obsoleta na .NET Framework versão 4. Como resultado, você pode encontrar os avisos de compilação e exceções de tempo de execução se você chamar os tipos de diretiva obsoleto e membros explicitamente ou implicitamente (por meio de outros tipos e membros).

Você pode evitar os avisos e erros tanto:

Este tópico contém as seções a seguir:

  • Uso explícito

  • Uso implícito

  • Erros e avisos

  • Migração: Substituição para chamadas obsoletas

  • Compatibilidade: Usando a opção Legacy de diretiva de CAS

Uso explícito

Membros que manipulam a diretiva de segurança ou exigem uma diretiva de CAS para seguro de diretamente estão obsoletos e produzirão erros por padrão.

Exemplos são:

Uso implícito

Carregamento de assembly várias sobrecargas gerar erros por causa de seu uso implícito de diretiva de CAS. Essas sobrecargas usam um Evidence parâmetro que é usado para resolver a diretiva CAS e fornecer uma concessão de permissão definida para um assembly.

Aqui estão alguns exemplos. Sobrecargas de obsoletas são aquelas que levam Evidence como um parâmetro:

Erros e avisos

Os tipos de obsoletos e membros produzem as seguintes mensagens de erro quando eles são usados. Observe que o System.Security.Policy.Evidence não o próprio tipo é obsoleto.

Aviso de tempo de compilação:

warning CS0618: '<API Name>' is obsolete: 'This method is obsolete and will be removed in a future release of the .NET Framework. Please use <suggested alternate API>. See <link> for more information.'

Exceção de tempo de execução:

NotSupportedException: This method uses CAS policy, which has been obsoleted by the .NET Framework. In order to enable CAS policy for compatibility reasons, please use the <NetFx40_LegacySecurityPolicy> configuration switch. Please see <link> for more information.

Migração: Substituição para chamadas obsoletas

Determinar o nível de confiança do Assembly

A diretiva de CAS geralmente é usada para determinar um assembly ou permissão do domínio de aplicativo conjunto de conceder ou nível de confiança. O .NET Framework 4 expõe as seguintes propriedades úteis que não é necessário resolver a diretiva de segurança:

Modo seguro do domínio de aplicativo

O AppDomain.SetAppDomainPolicy método é normalmente usado para o modo seguro os assemblies em um domínio de aplicativo. O .NET Framework 4 expõe os membros que não é necessário usar PolicyLevel para essa finalidade. Para obter mais informações, consulte Como: Executar o código parcialmente confiável em um modo seguro.

Determinar um conjunto de permissões de um seguro ou razoável para parcialmente confiável código

Hosts geralmente precisam determinar as permissões apropriadas para o código de modo seguro hospedado. Antes do .NET Framework 4, a diretiva de CAS forneciam uma forma de fazer isso com o SecurityManager.ResolvePolicy método. Como um substituto, .NET Framework 4 fornece a SecurityManager.GetStandardSandbox método, que retorna um conjunto de permissão seguro, padrão da evidência fornecida.

Cenários de modo não-seguro: Sobrecargas para cargas de Assembly

O motivo para usar uma sobrecarga de carregamento de assembly pode ser usar parâmetros que não estão disponíveis, em vez do assembly de modo seguro. Começando com o .NET Framework 4, sobrecargas de carregamento do assembly que não exigem um System.Security.Policy.Evidence o objeto como um parâmetro, por exemplo, AppDomain.ExecuteAssembly(String, String[], Byte[], AssemblyHashAlgorithm), ative este cenário.

Se você deseja colocar um assembly, use o AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) sobrecarga.

Compatibilidade: Usando a opção Legacy de diretiva de CAS

O <NetFx40_LegacySecurityPolicy> elemento de configuração permite que você especificar que um processo ou a biblioteca usa a diretiva de CAS herdada. Quando você habilita a esse elemento, sobrecargas de diretiva e evidência funcionará como faziam em versões anteriores do framework.

Observação

Comportamento da diretiva de autoridades de certificação é especificado em uma base de versão de tempo de execução, para que modificar a diretiva de CAS para uma versão de tempo de execução não afeta a diretiva de autoridades de certificação de outra versão.

<configuration>
   <runtime>
      <NetFx40_LegacySecurityPolicy enabled="true"/>
   </runtime>
</configuration>

Consulte também

Tarefas

Como: Executar o código parcialmente confiável em um modo seguro