<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:
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.
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>