<Elemento legacyImpersonationPolicy>

Especifica que a identidade do Windows não flua entre pontos assíncronos, independentemente das configurações de fluxo para o contexto de execução no thread atual.

<configuration>
  <runtime>
    <legacyImpersonationPolicy>

Syntax

<legacyImpersonationPolicy
   enabled="true|false"/>  

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
enabled Atributo obrigatório.

Especifica que WindowsIdentity não flui entre pontos assíncronos, independentemente das configurações de fluxo de ExecutionContext no thread atual.

Atributo habilitado

Valor Descrição
false WindowsIdentity flui entre pontos assíncronos, dependendo das configurações de fluxo ExecutionContext para o thread atual. Esse é o padrão.
true WindowsIdentity não flui entre pontos assíncronos, independentemente das configurações de fluxo ExecutionContext no thread atual.

Elementos filho

Nenhum.

Elementos pai

Elemento Descrição
configuration O elemento raiz em cada arquivo de configuração usado pelos aplicativos do Common Language Runtime e .NET Framework.
runtime Contém informações sobre associação do assembly e coleta de lixo.

Comentários

No .NET Framework versões 1.0 e 1.1, WindowsIdentity não flui entre nenhum ponto assíncrono definido pelo usuário. Começando com o .NET Framework versão 2.0, há um objeto ExecutionContext que contém informações sobre o thread em execução no momento e flui entre pontos assíncronos em um domínio de aplicativo. WindowsIdentity está incluído nesse contexto de execução e, portanto, também flui entre os pontos assíncronos, o que significa que, se houver um contexto de representação, ele também fluirá.

Começando com .NET Framework 2.0, você pode usar o elemento <legacyImpersonationPolicy> para especificar que WindowsIdentity não flui entre pontos assíncronos.

Observação

O CLR (Common Language Runtime) está ciente das operações de representação executadas usando apenas o código gerenciado, não a representação executada fora do código gerenciado, como por meio da invocação de plataforma para código não gerenciado ou por meio de chamadas diretas para funções Win32. Somente objetos gerenciados WindowsIdentity podem fluir entre pontos assíncronos, a menos que o elemento alwaysFlowImpersonationPolicy tenha sido definido como true (<alwaysFlowImpersonationPolicy enabled="true"/>). Definir o elemento alwaysFlowImpersonationPolicy como "true" especifica que a identidade do Windows sempre fluirá por pontos assíncronos, independentemente de como a representação tenha sido executada. Para obter mais informações sobre como fluir representação não gerenciada em pontos assíncronos, confira o elemento <alwaysFlowImpersonationPolicy>.

Você pode alterar esse comportamento padrão de duas outras maneiras:

  1. No código gerenciado por thread.

    Você pode suprimir o fluxo por thread modificando as configurações ExecutionContext e SecurityContext com auxílio dos métodos ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity ou SecurityContext.SuppressFlow.

  2. Na chamada para a interface do host não gerenciada para carregar o Common Language Runtime (CLR).

    Se uma interface de hospedagem não gerenciada (em vez de um executável gerenciado simples) for usada para carregar o CLR, você poderá especificar um sinalizador especial na chamada para a função CorBindToRuntimeEx. Para habilitar o modo de compatibilidade para todo o processo, defina o parâmetro flags da Função CorBindToRuntimeEx como STARTUP_LEGACY_IMPERSONATION.

Para obter mais informações, confira o <elemento alwaysFlowImpersonationPolicy>.

Arquivo de configuração

Em um aplicativo .NET Framework, esse elemento só pode ser usado no arquivo de configuração de aplicativo.

Para um aplicativo ASP.NET, o fluxo de representação pode ser configurado no arquivo aspnet.config, localizado no diretório <Pasta Windows>\Microsoft.NET\Framework\vx.x.xxxx.

Por padrão, o ASP.NET desabilita o fluxo de representação no arquivo aspnet.config usando as seguintes configurações:

<configuration>  
   <runtime>  
      <legacyImpersonationPolicy enabled="true"/>  
      <alwaysFlowImpersonationPolicy enabled="false"/>  
   </runtime>  
</configuration>  

No ASP.NET, se você quiser habilitar o fluxo de representação, deverá usar explicitamente as seguintes configurações:

<configuration>  
   <runtime>  
      <legacyImpersonationPolicy enabled="false"/>  
      <alwaysFlowImpersonationPolicy enabled="true"/>  
   </runtime>  
</configuration>  

Exemplo

O exemplo a seguir mostra como especificar o comportamento herdado que não flui a identidade do Windows entre pontos assíncronos.

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

Confira também