<alwaysFlowImpersonationPolicy> 要素

偽装の実行方法に関係なく、Windows ID が常に非同期ポイント間でフローすることを指定します。

<configuration>
  <runtime>
    <alwaysFlowImpersonationPolicy>\

構文

<alwaysFlowImpersonationPolicy
  enabled="true|false"/>  

属性および要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性 説明
enabled 必須の属性です。

Windows ID が非同期ポイント間をフローするかどうかを示します。

enabled 属性

[値] 説明
false Impersonate などのマネージド メソッドを使用して偽装を実行しない限り、Windows ID は非同期ポイント間をフローしません。 既定値です。
true 偽装の実行方法に関係なく、Windows ID は常に非同期ポイント間をフローします。

子要素

なし。

親要素

要素 説明
configuration 共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。
runtime アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。

解説

.NET Framework Version 1.0 および 1.1 では、Windows ID は非同期ポイント間をフローしません。 .NET Framework Version 2.0 では、現在実行中のスレッドに関する情報を格納する ExecutionContext オブジェクトがあり、アプリケーション ドメイン内の非同期ポイント間をフローします。 また、WindowsIdentity は、非同期ポイント間をフローする情報の一部としてもフローします。これは、Impersonate などのマネージド メソッドを使用して偽装が行われ、ネイティブ メソッドへのプラットフォーム呼び出しなどの他の方法は使用されなかった場合に限ります。 この要素は、偽装がどのように実現されたかに関係なく、Windows ID が非同期ポイント間をフローすることを指定するために使用されます。

この既定の動作は、次の 2 つの方法で変更できます。

  1. マネージド コード内で、スレッド単位で行う場合。

    ExecutionContext.SuppressFlowSecurityContext.SuppressFlowWindowsIdentity、または SecurityContext.SuppressFlow メソッドを使用して ExecutionContext 設定および SecurityContext 設定を変更することで、スレッド単位でフローを抑制できます。

  2. アンマネージド ホスティング インターフェイスを呼び出して、共通言語ランタイム (CLR) を読み込む場合。

    (単純なマネージド実行可能ファイルではなく) アンマネージド ホスティング インターフェイスを使用して CLR を読み込む場合は、CorBindToRuntimeEx 関数の呼び出しで特別なフラグを指定できます。 プロセス全体で互換モードを有効にするには、CorBindToRuntimeEx 関数flags パラメーターを STARTUP_ALWAYSFLOW_IMPERSONATION に設定します。

構成ファイル

.NET Framework アプリケーションでは、この要素はアプリケーション構成ファイルでのみ使用できます。

ASP.NET アプリケーションの場合は、<Windows Folder>\Microsoft.NET\Framework\vx.x.xxxx ディレクトリにある aspnet.config ファイルで偽装フローを構成できます。

ASP.NET では、既定で、次の構成設定を使用して、aspnet.config ファイルで偽装フローが無効になっています。

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

ASP.NET では、代わりに偽装のフローを許可する場合は、次の構成設定を明示的に使用する必要があります。

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

次の例では、マネージド メソッド以外の方法で偽装が行われた場合でも、Windows ID が非同期ポイント間をフローするように指定する方法を示します。

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

関連項目