<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> 元素。 |
此元素只可用于应用程序配置文件中。
还可以通过两种方式改变这种默认行为:
在托管代码中在每个线程的基础上改变。
通过使用 ExecutionContext.SuppressFlow、SecurityContext.SuppressFlowWindowsIdentity 或 SecurityContext.SuppressFlow 方法修改 ExecutionContext 和 SecurityContext 设置,可以在每个线程的基础上取消流。
在调用非托管宿主接口以加载公共语言运行库 (CLR) 时改变。
如果使用非托管宿主接口(而不是简单的托管可执行文件)加载 CLR,可以在对 CorBindToRuntimeEx 函数 函数的调用中指定一个特殊标记。若要对整个过程启用兼容模式,应将 CorBindToRuntimeEx 函数 的 flags 参数设置为 STARTUP_LEGACY_IMPERSONATION。
示例
下面的示例演示如何指定不让 Windows 标识流经异步点的旧式行为。
<configuration>
<runtime>
<legacyImpersonationPolicy enabled="true"/>
</runtime>
</configuration>