<alwaysFlowImpersonationPolicy> 元素
指定无论模拟是如何执行的,Windows 标识始终流经异步点。
<alwaysFlowImpersonationPolicy
enabled="true|false"/>
特性和元素
以下几节描述了属性、子元素和父元素。
特性
特性 |
说明 |
---|---|
enabled |
必选特性。 指示 Windows 标识是否流经异步点。 |
enabled 特性
值 |
说明 |
---|---|
false |
Windows 标识不流经异步点,除非模拟是通过诸如 Impersonate 这样的托管方法执行的。 这是默认值。 |
true |
无论模拟是如何执行的,Windows 标识始终流经异步点。 |
子元素
无。
父元素
元素 |
说明 |
---|---|
configuration |
公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。 |
runtime |
包含有关程序集绑定和垃圾回收的信息。 |
备注
在 .NET Framework 1.0 和 1.1 版中,Windows 标识不流经异步点。 在 .NET Framework 2.0 版中,有一个包含关于当前执行线程的信息的 ExecutionContext 对象,并且它流经应用程序域中的异步点。 只要模拟是使用托管方法(如 Impersonate)而不是通过其他途径(如对本机方法的平台调用)实现的,则 WindowsIdentity 还将作为流经异步点的信息的一部分流动。 此元素用于指定无论模拟是如何实现的,Windows 标识总要流经异步点。
还可以通过两种方式改变这种默认行为:
在托管代码中在每个线程的基础上改变。
通过使用 ExecutionContext.SuppressFlow、SecurityContext.SuppressFlowWindowsIdentity 或 SecurityContext.SuppressFlow 方法修改 ExecutionContext 和 SecurityContext 设置,可以在每个线程的基础上取消流。
在调用非托管承载接口,以加载公共语言运行时 (CLR) 时改变。
如果使用非托管承载接口而非简单的托管可执行文件来加载 CLR,可以在对 CorBindToRuntimeEx 函数 函数的调用中指定一个特殊标记。 若要对整个过程启用兼容模式,应将 CorBindToRuntimeEx 函数 的 flags 参数设置为 STARTUP_ALWAYSFLOW_IMPERSONATION。
配置文件
此元素只可用于应用程序配置文件中。
示例
下面的示例演示如何指定 Windows 标识流经异步点 -- 即使模拟是通过除托管方法以外的途径实现的也如此。
<configuration>
<runtime>
<alwaysFlowImpersonationPolicy enabled="true"/>
</runtime>
</configuration>
请参见
参考
<legacyImpersonationPolicy> 元素