Udostępnij przez


<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 Wymagany atrybut.

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

włączony atrybut

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

Elementy podrzędne

Żaden.

Elementy nadrzędne

Pierwiastek Opis
configuration Element główny w każdym pliku konfiguracji używanym przez środowisko uruchomieniowe języka wspólnego i aplikacje .NET Framework.
runtime Zawiera informacje na temat powiązania zestawu i odzyskiwania pamięci.

Uwagi

W programie .NET Framework w wersji 1.0 i 1.1 WindowsIdentity nie przepływa między żadnymi punktami asynchronicznymi zdefiniowanymi przez użytkownika. Począwszy od programu .NET Framework w wersji 2.0, istnieje obiekt ExecutionContext zawierający informacje o aktualnie wykonywanym wątku i przepływa w punktach asynchronicznych w domenie aplikacji. WindowsIdentity jest uwzględniona w tym kontekście wykonywania, a tym samym przepływa w punktach asynchronicznych, co oznacza, że jeśli istnieje kontekst personifikacji, również przepływa.

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

Nuta

Ś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 zarządzanym kodem, na przykład za pomocą wywołania platformy do niezarządzanego kodu lub za pomocą bezpośrednich wywołań funkcji Win32. Tylko zarządzane obiekty WindowsIdentity mogą przepływać między punktami asynchronicznymi, chyba że element alwaysFlowImpersonationPolicy został ustawiony na wartość true (<alwaysFlowImpersonationPolicy enabled="true"/>). Ustawienie elementu alwaysFlowImpersonationPolicy na true określa, że tożsamość systemu Windows zawsze przepływa w punktach asynchronicznych, niezależnie od sposobu personifikacji. Aby uzyskać więcej informacji na temat przepływu personifikacji niezarządzanej 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 poszczególnych wątków, modyfikując ustawienia ExecutionContext i SecurityContext przy użyciu metody ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity lub SecurityContext.SuppressFlow.

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

    Jeśli interfejs hostingu niezarządzanego (zamiast prostego zarządzanego pliku wykonywalnego) jest używany do ładowania środowiska CLR, można określić specjalną flagę w wywołaniu funkcji CorBindToRuntimeEx funkcji. Aby włączyć tryb zgodności dla całego procesu, ustaw parametr flags 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 <Folder systemu Windows>\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 w punktach asynchronicznych.

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

Zobacz też