Elemen <legacyImpersonationPolicy>

Menentukan bahwa identitas Windows tidak mengalir di seluruh titik asinkron, terlepas dari pengaturan alur untuk konteks eksekusi pada utas saat ini.

<configuration>
  <runtime>
    <legacyImpersonationPolicy>

Sintaksis

<legacyImpersonationPolicy
   enabled="true|false"/>

Atribut dan Elemen

Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.

Atribut

Atribut Deskripsi
enabled Atribut yang diperlukan.

Menentukan bahwa WindowsIdentity tidak mengalir melintasi titik asinkron, terlepas dari pengaturan alur ExecutionContext pada utas saat ini.

Atribut yang diaktifkan

Nilai Deskripsi
false WindowsIdentity mengalir di seluruh titik asinkron tergantung pada pengaturan alur ExecutionContext untuk utas saat ini. Ini adalah default.
true WindowsIdentity tidak mengalir di seluruh titik asinkron, terlepas dari pengaturan alur ExecutionContext pada utas saat ini.

Elemen Anak

Tidak.

Elemen Induk

Elemen Deskripsi
configuration Elemen akar dalam setiap file konfigurasi yang digunakan oleh runtime bahasa umum dan aplikasi .NET Framework.
runtime Berisi informasi tentang pengikatan perakitan dan pengumpulan sampah.

Komentar

Dalam .NET Framework versi 1.0 dan 1.1, WindowsIdentity tidak mengalir di titik asinkron yang ditentukan pengguna. Dimulai dengan .NET Framework versi 2.0, ada objek ExecutionContext yang berisi informasi tentang utas yang sedang dijalankan, dan mengalir di seluruh titik asinkron dalam domain aplikasi. WindowsIdentity disertakan dalam konteks eksekusi ini dan oleh karena itu juga mengalir di seluruh titik asinkron, yang berarti bahwa jika ada konteks peniruan, itu juga akan mengalir.

Dimulai dengan .NET Framework 2.0, Anda dapat menggunakan elemen <legacyImpersonationPolicy> untuk menentukan bahwa WindowsIdentity tidak mengalir di titik asinkron.

Nota

Runtime bahasa umum (CLR) menyadari operasi peniruan yang dilakukan hanya menggunakan kode terkelola, bukan peniruan yang dilakukan di luar kode terkelola, seperti melalui pemanggilan platform ke kode yang tidak dikelola atau melalui panggilan langsung ke fungsi Win32. Hanya objek WindowsIdentity terkelola yang dapat mengalir di seluruh titik asinkron, kecuali elemen alwaysFlowImpersonationPolicy telah diatur ke true (<alwaysFlowImpersonationPolicy enabled="true"/>). Mengatur elemen alwaysFlowImpersonationPolicy ke true menentukan bahwa identitas Windows selalu mengalir di seluruh titik asinkron, terlepas dari bagaimana peniruan dilakukan. Untuk informasi selengkapnya tentang mengalirnya peniruan tidak terkelola di seluruh titik asinkron, lihat <alwaysFlowImpersonationPolicy> Element.

Anda dapat mengubah perilaku default ini dengan dua cara lain:

  1. Dalam kode terkelola berdasarkan per utas.

    Anda dapat menekan alur berdasarkan per utas dengan memodifikasi pengaturan ExecutionContext dan SecurityContext dengan menggunakan metode ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity, atau SecurityContext.SuppressFlow.

  2. Dalam panggilan ke antarmuka hosting yang tidak dikelola untuk memuat runtime bahasa umum (CLR).

    Jika antarmuka hosting yang tidak dikelola (alih-alih executable terkelola sederhana) digunakan untuk memuat CLR, Anda dapat menentukan bendera khusus dalam panggilan ke fungsi Fungsi CorBindToRuntimeEx. Untuk mengaktifkan mode kompatibilitas untuk seluruh proses, atur parameter flags untuk Fungsi CorBindToRuntimeEx ke STARTUP_LEGACY_IMPERSONATION.

Untuk informasi selengkapnya, lihat <alwaysFlowImpersonationPolicy> Elemen.

File Konfigurasi

Dalam aplikasi .NET Framework, elemen ini hanya dapat digunakan dalam file konfigurasi aplikasi.

Untuk aplikasi ASP.NET, alur peniruan dapat dikonfigurasi dalam file aspnet.config yang ditemukan di direktori <Windows Folder>\Microsoft.NET\Framework\vx.x.xxxx.

ASP.NET secara default menonaktifkan alur peniruan dalam file aspnet.config dengan menggunakan pengaturan konfigurasi berikut:

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

Dalam ASP.NET, jika Anda ingin mengizinkan alur peniruan, Anda harus secara eksplisit menggunakan pengaturan konfigurasi berikut:

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

Contoh

Contoh berikut menunjukkan cara menentukan perilaku warisan yang tidak mengalirkan identitas Windows di seluruh titik asinkron.

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

Lihat juga