Condividi tramite


Elemento> legacyImpersonationPolicy <

Specifica che l'identità di Windows non passa attraverso punti asincroni, indipendentemente dalle impostazioni del flusso per il contesto di esecuzione nel thread corrente.

< > di configurazione
   > runtime di<
     <legacyImpersonationPolicy>

Sintassi

<legacyImpersonationPolicy
   enabled="true|false"/>  

Attributi ed elementi

Le sezioni seguenti descrivono attributi, elementi figlio ed elementi padre.

Attributi

Attributo Descrizione
enabled Attributo obbligatorio.

Specifica che la WindowsIdentity non viene propagata tra punti asincroni, indipendentemente dalle impostazioni del flusso ExecutionContext nel thread corrente.

Attributo abilitato

Valore Descrizione
false WindowsIdentity i flussi tra punti asincroni a seconda delle impostazioni del flusso ExecutionContext per il thread corrente. Si tratta dell'impostazione predefinita.
true WindowsIdentity non passa attraverso punti asincroni, indipendentemente dalle impostazioni del flusso ExecutionContext nel thread corrente.

Elementi figlio

Nessuno.

Elementi padre

Elemento Descrizione
configuration Elemento radice in ogni file di configurazione usato dalle applicazioni Common Language Runtime e .NET Framework.
runtime Contiene informazioni sull'associazione di assembly e la Garbage Collection.

Osservazioni

In .NET Framework versioni 1.0 e 1.1, il WindowsIdentity non viene propagato tra punti asincroni definiti dall'utente. A partire da .NET Framework versione 2.0, è presente un oggetto ExecutionContext che contiene informazioni sul thread attualmente in esecuzione e passa attraverso punti asincroni all'interno di un dominio applicazione. Il WindowsIdentity è incluso in questo contesto di esecuzione e quindi scorre anche tra i punti asincroni, il che significa che, se esiste un contesto di rappresentazione, scorrerà anche.

A partire da .NET Framework 2.0, è possibile usare l'elemento <legacyImpersonationPolicy> per specificare che WindowsIdentity non scorre tra punti asincroni.

Nota

Common Language Runtime (CLR) è a conoscenza delle operazioni di rappresentazione eseguite usando solo codice gestito, non di rappresentazione eseguita all'esterno del codice gestito, ad esempio tramite platform invoke a codice non gestito o tramite chiamate dirette alle funzioni Win32. Solo gli oggetti WindowsIdentity gestiti possono scorrere tra punti asincroni, a meno che l'elemento alwaysFlowImpersonationPolicy sia stato impostato su true (<alwaysFlowImpersonationPolicy enabled="true"/>). L'impostazione dell'elemento alwaysFlowImpersonationPolicy su true specifica che l'identità di Windows scorre sempre tra i punti asincroni, indipendentemente dalla modalità di esecuzione della rappresentazione. Per altre informazioni sul flusso della rappresentazione non gestita tra i punti asincroni, vedere <alwaysFlowImpersonationPolicy> Element.

È possibile modificare questo comportamento predefinito in altri due modi:

  1. Nel codice gestito per thread.

    È possibile eliminare il flusso in base al thread modificando le impostazioni di ExecutionContext e SecurityContext usando il metodo ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity o SecurityContext.SuppressFlow.

  2. Nella chiamata all'interfaccia di hosting non gestita per caricare Common Language Runtime (CLR).

    Se per caricare CLR viene usata un'interfaccia di hosting non gestita anziché un semplice eseguibile gestito, è possibile specificare un flag speciale nella chiamata alla funzione Funzione CorBindToRuntimeEx. Per abilitare la modalità di compatibilità per l'intero processo, impostare il parametro flags per Funzione CorBindToRuntimeEx su STARTUP_LEGACY_IMPERSONATION.

Per altre informazioni, vedere l'elemento <alwaysFlowImpersonationPolicy>.

File di configurazione

In un'applicazione .NET Framework questo elemento può essere usato solo nel file di configurazione dell'applicazione.

Per un'applicazione ASP.NET, il flusso di rappresentazione può essere configurato nel file aspnet.config disponibile nella directory <cartella di Windows>\Microsoft.NET\Framework\vx.x.xxxx.

ASP.NET per impostazione predefinita disabilita il flusso di rappresentazione nel file aspnet.config usando le impostazioni di configurazione seguenti:

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

In ASP.NET, se si vuole consentire il flusso di rappresentazione, è necessario usare in modo esplicito le impostazioni di configurazione seguenti:

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

Esempio

Nell'esempio seguente viene illustrato come specificare il comportamento legacy che non scorre l'identità di Windows tra punti asincroni.

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

Vedere anche