<legacyImpersonationPolicy> 元素

更新:2007 年 11 月

指定无论当前线程上的执行上下文的流设置如何,Windows 标识都不流经异步点。

<configuration> 元素
  <runtime> 元素
    <legacyImpersonationPolicy> 元素

<legacyImpersonationPolicy  
   enabled="true|false"/>

属性和元素

以下几节描述了属性、子元素和父元素。

属性

属性

说明

enabled

必选的属性。

指定无论当前线程上的 ExecutionContext 流设置如何,WindowsIdentity 都不流经异步点。

启用的属性

说明

false

WindowsIdentity 根据当前线程的 ExecutionContext 流设置确定是否流经异步点。这是默认设置。

true

WindowsIdentity 无论当前线程上的 ExecutionContext 流设置如何都不流经异步点。

子元素

无。

父元素

元素

说明

configuration

公共语言运行库和 .NET Framework 应用程序所使用的每个配置文件中的根元素。

runtime

包含有关程序集绑定和垃圾回收的信息。

备注

在 .NET Framework 1.0 和 1.1 版中,WindowsIdentity 不流经任何用户定义的异步点。在 .NET Framework 2.0 版中,有一个包含关于当前执行线程的信息的 ExecutionContext 对象,并且它流经应用程序域中的异步点。WindowsIdentity 也作为流经异步点的信息的一部分流动,这意味着如果模拟上下文退出,它仍会流动。此元素用于指定 WindowsIdentity 不流经异步点。

说明:

此公共语言运行库 (CLR) 会察觉仅使用托管代码执行的模拟操作,不会察觉在托管代码以外执行的模拟,如通过平台调用非托管代码或通过直接调用 Win32 函数。只有托管 WindowsIdentity 对象可以流经异步点,除非 alwaysFlowImpersonationPolicy 元素已设置为 true (<alwaysFlowImpersonationPolicy enabled="true"/>)。将 alwaysFlowImpersonationPolicy 元素设置为 true 会指定无论模拟是如何执行的,Windows 标识始终流经异步点。有关使非托管模拟流经异步点的更多信息,请参见 <alwaysFlowImpersonationPolicy> 元素

此元素只可用于应用程序配置文件中。

还可以通过两种方式改变这种默认行为:

  1. 在托管代码中在每个线程的基础上改变。

    通过使用 ExecutionContext.SuppressFlowSecurityContext.SuppressFlowWindowsIdentitySecurityContext.SuppressFlow 方法修改 ExecutionContextSecurityContext 设置,可以在每个线程的基础上取消流。

  2. 在调用非托管宿主接口以加载公共语言运行库 (CLR) 时改变。

    如果使用非托管宿主接口(而不是简单的托管可执行文件)加载 CLR,可以在对 CorBindToRuntimeEx 函数 函数的调用中指定一个特殊标记。若要对整个过程启用兼容模式,应将 CorBindToRuntimeEx 函数 的 flags 参数设置为 STARTUP_LEGACY_IMPERSONATION。

示例

下面的示例演示如何指定不让 Windows 标识流经异步点的旧式行为。

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

请参见

参考

运行库设置架构

其他资源

.NET Framework 的配置文件架构