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