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:
Migrando para o .NET Framework 4 substituições para chamadas obsoleto.
- ou -
Usando o <NetFx40_LegacySecurityPolicy> elemento de configuração para consentir o comportamento herdado de diretiva de CAS.
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