<alwaysFlowImpersonationPolicy> 項目
指定 Windows 識別一定會跨非同步點流動,不論如何執行模擬。
<alwaysFlowImpersonationPolicy
enabled="true|false"/>
屬性和項目
下列各節將說明屬性、子項目和父項目。
屬性
屬性 |
描述 |
---|---|
enabled |
必要屬性。 指出 Windows 識別是否會跨非同步點流動。 |
啟用屬性
值 |
描述 |
---|---|
false |
Windows 識別不會跨非同步點流動,除非是透過如 Impersonate 的 Managed 方法來執行模擬。 這是預設值。 |
true |
Windows 識別一定會跨非同步點流動,不論如何執行模擬。 |
子項目
無。
父項目
項目 |
描述 |
---|---|
configuration |
Common Language Runtime 和 .NET Framework 應用程式所使用之每個組態檔中的根項目。 |
runtime |
包含有關組件繫結和記憶體回收的資訊。 |
備註
在 .NET Framework 1.0 和 1.1 版中,Windows 識別不會跨非同步點流動。 在 .NET Framework 2.0 版中,有一個 ExecutionContext 物件包含了與目前執行之執行緒有關的資訊,而且它會在應用程式定義域內跨非同步點流動。 WindowsIdentity 也會當做此資訊的一部分進行跨非同步點流動,但前提是模擬作業是利用類似 Impersonate 的 Managed 方法所完成,而不是透過類似原生方法的平台叫用等其他方法來完成。 這個項目是用來指定 Windows 識別不會跨非同步點流動,不論模擬作業是如何完成。
您可以使用兩種其他方式來更改此預設行為:
針對個別執行緒在 Managed 程式碼中進行。
您可以針對個別執行緒來隱藏此流程,其方式是使用 ExecutionContext.SuppressFlow、SecurityContext.SuppressFlowWindowsIdentity 或 SecurityContext.SuppressFlow 方法修改 ExecutionContext 和 SecurityContext 設定。
在 Unmanaged 裝載介面的呼叫中,用來載入 Common Language Runtime (CLR)。
如果使用 Unmanaged 裝載介面 (而非單一 Managed 可執行檔) 來載入 CLR,您可以在 CorBindToRuntimeEx 函式 函式的呼叫中指定特殊旗標。 若要為整個處理序啟用相容性模式,請將 CorBindToRuntimeEx 函式 的 flags 參數設定為 STARTUP_ALWAYSFLOW_IMPERSONATION。
組態檔
這個項目只能在應用程式組態檔中使用。
範例
下列範例將示範如何指定 Windows 識別會跨非同步點流動,即使是透過 Managed 方法以外的方式來完成模擬。
<configuration>
<runtime>
<alwaysFlowImpersonationPolicy enabled="true"/>
</runtime>
</configuration>
請參閱
參考
<legacyImpersonationPolicy> 項目