Compartilhar via


Elemento <legacyImpersonationPolicy>

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

<configuração>
   <Runtime>
     <legacyImpersonationPolicy>

Sintaxe

<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 necessário.

Especifica que o WindowsIdentity não flui entre pontos assíncronos, independentemente das configurações de fluxo 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 de ExecutionContext no thread atual.

Elementos filho

Nenhum.

Elementos pai

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

Observações

Nas versões do .NET Framework 1.0 e 1.1, o WindowsIdentity não flui entre nenhum ponto assíncrono definido pelo usuário. A partir do .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 dentro de um domínio de aplicativo. O WindowsIdentity é 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á.

A partir do .NET Framework 2.0, você pode usar o elemento <legacyImpersonationPolicy> para especificar que WindowsIdentity não flui entre pontos assíncronos.

Nota

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 WindowsIdentity gerenciados 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 flui entre pontos assíncronos, independentemente de como a representação foi executada. Para obter mais informações sobre como fluir representação não gerenciada em pontos assíncronos, consulte <alwaysFlowImpersonationPolicy> Element.

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 de ExecutionContext e SecurityContext usando o método ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity ou SecurityContext.SuppressFlow.

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

    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 para de função CorBindToRuntimeEx para STARTUP_LEGACY_IMPERSONATION.

Para obter mais informações, consulte o <alwaysFlowImpersonationPolicy> Elemento.

Arquivo de configuração

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

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

ASP.NET por padrão 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>

Em ASP.NET, se você quiser permitir 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>

Consulte também