Udostępnij za pośrednictwem


<legacyImpersonationPolicy> , element

Określa, że tożsamość systemu Windows nie przepływa między punktami asynchronicznymi, niezależnie od ustawień przepływu dla kontekstu wykonywania w bieżącym wątku.

<Konfiguracji>
  <Środowiska wykonawczego>
    <legacyImpersonationPolicy>

Składnia

<legacyImpersonationPolicy
   enabled="true|false"/>  

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut Opis
enabled Atrybut wymagany.

Określa, że WindowsIdentity nie przepływa między punktami asynchronicznymi, niezależnie od ExecutionContext ustawień przepływu w bieżącym wątku.

Atrybut włączony

Wartość Opis
false WindowsIdentity przepływy między punktami asynchronicznymi w zależności od ExecutionContext ustawień przepływu dla bieżącego wątku. Jest to opcja domyślna.
true WindowsIdentity nie przepływa między punktami asynchronicznymi, niezależnie od ExecutionContext ustawień przepływu w bieżącym wątku.

Elementy podrzędne

Brak.

Elementy nadrzędne

Element Opis
configuration Element główny w każdym pliku konfiguracji używanym przez środowisko uruchomieniowe języka wspólnego i aplikacje programu .NET Framework.
runtime Zawiera informacje dotyczące powiązania zestawu oraz wyrzucania elementów bezużytecznych.

Uwagi

W .NET Framework wersji 1.0 i 1.1 WindowsIdentity element nie przepływa między żadnymi punktami asynchronicznymi zdefiniowanymi przez użytkownika. Począwszy od .NET Framework w wersji 2.0, istnieje ExecutionContext obiekt, który zawiera informacje o aktualnie wykonywanym wątku i przepływa między punktami asynchronicznymi w domenie aplikacji. Element WindowsIdentity jest uwzględniony w tym kontekście wykonywania, a zatem również przepływa przez punkty asynchroniczne, co oznacza, że jeśli istnieje kontekst personifikacji, również przepływa.

Począwszy od .NET Framework 2.0, można użyć <legacyImpersonationPolicy> elementu , aby określić, że WindowsIdentity nie przepływa między punktami asynchronicznymi.

Uwaga

Środowisko uruchomieniowe języka wspólnego (CLR) zdaje sobie sprawę z operacji personifikacji wykonywanych tylko przy użyciu kodu zarządzanego, a nie personifikacji wykonywanej poza kodem zarządzanym, takich jak wywołanie platformy do niezarządzanego kodu lub bezpośrednie wywołania funkcji Win32. Tylko zarządzane WindowsIdentity obiekty mogą przepływać między punktami asynchronicznymi, chyba że alwaysFlowImpersonationPolicy element został ustawiony na wartość true (<alwaysFlowImpersonationPolicy enabled="true"/>). alwaysFlowImpersonationPolicy Ustawienie elementu na true określa, że tożsamość systemu Windows zawsze przepływa w punktach asynchronicznych, niezależnie od sposobu wykonania personifikacji. Aby uzyskać więcej informacji na temat przepływu niezarządzanej personifikacji w punktach asynchronicznych, zobacz <alwaysFlowImpersonationPolicy> , element.

To zachowanie domyślne można zmienić na dwa inne sposoby:

  1. W kodzie zarządzanym dla poszczególnych wątków.

    Przepływ można pominąć dla każdego wątku, modyfikując ustawienia i SecurityContext przy użyciu ExecutionContext.SuppressFlowmetody lub SecurityContext.SuppressFlowWindowsIdentitySecurityContext.SuppressFlow .ExecutionContext

  2. W wywołaniu interfejsu hostingu niezarządzanego w celu załadowania środowiska uruchomieniowego języka wspólnego (CLR).

    Jeśli do załadowania środowiska CLR jest używany niezarządzany interfejs hostingu (zamiast prostego zarządzanego pliku wykonywalnego), możesz określić specjalną flagę w wywołaniu funkcji CorBindToRuntimeEx . Aby włączyć tryb zgodności dla całego procesu, ustaw flags parametr dla funkcji CorBindToRuntimeEx na STARTUP_LEGACY_IMPERSONATION.

Aby uzyskać więcej informacji, zobacz <alwaysFlowImpersonationPolicy> , element.

Plik konfiguracji

W aplikacji .NET Framework ten element może być używany tylko w pliku konfiguracji aplikacji.

W przypadku aplikacji ASP.NET przepływ personifikacji można skonfigurować w pliku aspnet.config znajdującym się w <katalogu Windows Folder>\Microsoft.NET\Framework\vx.x.xxxx.

ASP.NET domyślnie wyłącza przepływ personifikacji w pliku aspnet.config przy użyciu następujących ustawień konfiguracji:

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

Jeśli w ASP.NET chcesz zezwolić na przepływ personifikacji, musisz jawnie użyć następujących ustawień konfiguracji:

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

Przykład

W poniższym przykładzie pokazano, jak określić starsze zachowanie, które nie przepływa tożsamości systemu Windows między punktami asynchronicznymi.

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

Zobacz też