element <legacyImpersonationPolicy>

Určuje, že identita Systému Windows neprotéká mezi asynchronními body bez ohledu na nastavení toku pro kontext spuštění v aktuálním vlákně.

<configuration>
  <runtime>
    <legacyImpersonationPolicy>

Syntax

<legacyImpersonationPolicy
   enabled="true|false"/>

Atributy a prvky

Následující části popisují atributy, podřízené prvky a nadřazené prvky.

Atributy

Atribut Popis
enabled Povinný atribut.

Určuje, že WindowsIdentity neprotéká mezi asynchronními body bez ohledu na nastavení toku ExecutionContext v aktuálním vlákně.

enabled – atribut

Hodnota Popis
false WindowsIdentity toky mezi asynchronními body v závislosti na nastavení toku ExecutionContext pro aktuální vlákno. Toto je výchozí hodnota.
true WindowsIdentity neprotéká mezi asynchronními body bez ohledu na nastavení toku ExecutionContext v aktuálním vlákně.

Podřízené elementy

Žádný.

Nadřazené elementy

Element Popis
configuration Kořenový prvek v každém konfiguračním souboru používaném modulem CLR (Common Language Runtime) a aplikacemi rozhraní .NET Framework.
runtime Obsahuje informace o vazbě sestavení a uvolňování paměti.

Poznámky

V rozhraní .NET Framework verze 1.0 a 1.1 WindowsIdentity neprotéká mezi žádné uživatelem definované asynchronní body. Počínaje rozhraním .NET Framework verze 2.0 je objekt ExecutionContext, který obsahuje informace o aktuálně spuštěné vlákně a prochází mezi asynchronními body v rámci domény aplikace. WindowsIdentity je součástí tohoto kontextu spuštění, a proto také proudí mezi asynchronními body, což znamená, že pokud existuje kontext zosobnění, bude tok také tok.

Počínaje rozhraním .NET Framework 2.0 můžete pomocí elementu <legacyImpersonationPolicy> určit, že WindowsIdentity neprotéká mezi asynchronními body.

Poznámka

Modul CLR (Common Language Runtime) si uvědomuje operace zosobnění prováděné pouze pomocí spravovaného kódu, nikoli zosobnění prováděného mimo spravovaný kód, například prostřednictvím volání platformy na nespravovaný kód nebo přímé volání funkcí Win32. Pouze spravované WindowsIdentity objekty mohou přetékat mezi asynchronními body, pokud nebyl element alwaysFlowImpersonationPolicy nastaven na true (<alwaysFlowImpersonationPolicy enabled="true"/>). Nastavení elementu alwaysFlowImpersonationPolicy na true určuje, že identita Systému Windows vždy proudí mezi asynchronními body bez ohledu na to, jak bylo provedeno zosobnění. Další informace o toku nespravované zosobnění mezi asynchronními body najdete v tématu <alwaysFlowImpersonationPolicy> Element.

Toto výchozí chování můžete změnit dvěma dalšími způsoby:

  1. Ve spravovaném kódu na základě jednotlivých vláken.

    Tok můžete potlačit na základě jednotlivých vláken úpravou nastavení ExecutionContext a SecurityContext pomocí metody ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity nebo SecurityContext.SuppressFlow.

  2. Při volání nespravovaného hostitelského rozhraní pro načtení modulu CLR (Common Language Runtime).

    Pokud se k načtení modulu CLR používá nespravované hostitelské rozhraní (místo jednoduchého spravovaného spustitelného souboru), můžete ve volání CorBindToRuntimeEx funkce zadat speciální příznak. Pokud chcete povolit režim kompatibility pro celý proces, nastavte parametr flags pro CorBindToRuntimeEx na STARTUP_LEGACY_IMPERSONATION.

Další informace naleznete v elementu<alwaysFlowImpersonationPolicy>.

Konfigurační soubor

V aplikaci .NET Framework lze tento prvek použít pouze v konfiguračním souboru aplikace.

U ASP.NET aplikace je možné tok zosobnění nakonfigurovat v souboru aspnet.config nalezeném ve složce <Windows>\Microsoft.NET\Framework\vx.x.xxxx adresáře.

ASP.NET ve výchozím nastavení zakáže tok zosobnění v souboru aspnet.config pomocí následujícího nastavení konfigurace:

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

Pokud chcete povolit tok zosobnění, musíte v ASP.NET explicitně použít následující nastavení konfigurace:

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

Příklad

Následující příklad ukazuje, jak určit starší chování, které neprovádí identitu Windows napříč asynchronními body.

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

Viz také