Condividi tramite


<Elemento legacyImpersonationPolicy>

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

<Configurazione>
  <Runtime>
    <legacyImpersonationPolicy>

Sintassi

<legacyImpersonationPolicy
   enabled="true|false"/>  

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributi

Attributo Descrizione
enabled Attributo obbligatorio.

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

Attributo enabled

Valore Descrizione
false WindowsIdentity passa attraverso punti asincroni a seconda delle ExecutionContext impostazioni del flusso per il thread corrente. Questo è il valore predefinito.
true WindowsIdentity non scorre in punti asincroni, indipendentemente dalle impostazioni del ExecutionContext flusso nel thread corrente.

Elementi figlio

Nessuno.

Elementi padre

Elemento Descrizione
configuration Elemento radice in ciascun file di configurazione usato in Common Language Runtime e nelle applicazioni .NET Framework.
runtime Contiene informazioni sull'associazione degli assembly e sull'operazione di Garbage Collection.

Commenti

In .NET Framework versioni 1.0 e 1.1, l'oggetto WindowsIdentity non scorre tra punti asincroni definiti dall'utente. A partire da .NET Framework versione 2.0, esiste un ExecutionContext oggetto che contiene informazioni sul thread attualmente in esecuzione e scorre tra punti asincroni all'interno di un dominio applicazione. L'oggetto 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, verrà inoltre eseguito il flusso.

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) è consapevole delle operazioni di rappresentazione eseguite usando solo codice gestito, non di rappresentazione eseguita all'esterno del codice gestito, ad esempio tramite l'richiamare alla piattaforma per il codice non gestito o tramite chiamate dirette alle funzioni Win32. Solo gli oggetti gestiti possono scorrere in punti asincroni WindowsIdentity , a meno che l'elemento alwaysFlowImpersonationPolicy non sia stato impostato su true (<alwaysFlowImpersonationPolicy enabled="true"/>). L'impostazione dell'elemento su true specifica che l'identità alwaysFlowImpersonationPolicy di Windows scorre sempre in punti asincroni, indipendentemente dalla modalità di rappresentazione eseguita. Per altre informazioni sul flusso della rappresentazione non gestita tra punti asincroni, vedere <alwaysFlowImpersonationPolicy> Element.

È possibile modificare questo comportamento predefinito in due modi diversi:

  1. Nel codice gestito in base al thread.

    È possibile eliminare il flusso in base a thread modificando le impostazioni e SecurityContext usando il ExecutionContext.SuppressFlowmetodo o SecurityContext.SuppressFlowWindowsIdentitySecurityContext.SuppressFlow .ExecutionContext

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

    Se 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 flags parametro per la 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 trovato nella <directory Windows Folder>\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 in punti asincroni.

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

Vedi anche